写出单链表的类型定义。然后编写一个函数,实现在带头结点的单链表上将后k个结点变换为前k个结点的操作。
例如:若表中原来元素为:8 5 6 9 7 4 3 设k=3,则变换后为:7 4 3 8 5 6 9
//类型定义
typedef struct
{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
//带头结点的单链表上将后k个结点变换为前k个结点的操作
void MoveNodesToHead(LinkList L, int k)
{
LNode *p, *q, *r;
p = q = L;
while (k--)
{
p = p->next;
}
while (p->next)
{
p = p->next;
q = q->next;
}
r = q->next;//r为后面第k个节点的头指针
q->next = p->next;
p->next = L->next;
L->next = r;
}