本文主要是介绍带头结点的单链表上将后k个结点变换为前k个结点的操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
写出单链表的类型定义。然后编写一个函数,实现在带头结点的单链表上将后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;
}
这篇关于带头结点的单链表上将后k个结点变换为前k个结点的操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!