利用头插法能重新建立带头节点的新链表
下面简单介绍一下,算法思想结合图示看
算法思想:逆置链表初始为空,表中节点从原链表中依次“删除”,再逐个插入逆置链表的表头(即“头插”到逆置链表中),使它成为逆置链表的“新”的第一个结点,如此循环,直至原链表为空。
LNode *Inverse(LNode *L){ LNode *p, *q; p = L->next; L->next = NULL; while (p != NULL) { q = p; p = p->next; q->next = L->next; L->next = q; } return L; }
接下来,进行图解:
刚开始是这样
’循环前的操作
进入循环,分别用q和p记录第一个和第二个节点
进入第二轮循环,这是发生重大变化的关键时期
这张图调整一下
直到链表为空