367 发表于 2020-3-8 08:54:09

单链表逆置:头插法

【数据结构】单链表逆置:头插法图解
利用头插法能重新建立带头节点的新链表
下面简单介绍一下,算法思想结合图示看

算法思想:逆置链表初始为空,表中节点从原链表中依次“删除”,再逐个插入逆置链表的表头(即“头插”到逆置链表中),
                使它成为逆置链表的“新”的第一个结点,如此循环,直至原链表为空。

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记录第一个和第二个节点








进入第二轮循环,这是发生重大变化的关键时期







这张图调整一下



直到链表为空
————————————————
版权声明:本文为CSDN博主「沉晓」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42322103/article/details/82668765

qiuyouzhi 发表于 2020-3-8 09:05:30

请用代码格式发代码!
页: [1]
查看完整版本: 单链表逆置:头插法