链表的逆置(数据结构)

链表逆置详解
本文深入解析了链表逆置的实现原理,通过C语言代码示例详细解释了如何使用头插法逆序建立链表,实现了单链表的逆置。并提供了一道链表逆置题目的解答思路。

数据结构  链表的逆置

 

 

本人经过长时间的理解,终于发现链表的逆置其实就是逆序建立链表的过程,只不过现在不用建立新的结点不用分配内存空间而已,我们只是需要把链表后面的结点拆出来,再按照逆序建表的头插法插到前面的链表中即可。 

下面是C语言程序,逆置单链表:

void reverse(struct node * head)
{///单链表逆置函数
    struct node *p, *q;///逆置单链表需要用到两个指针
    p = head->next;///先令 p 指向第一个元素结点
    q = p->next;/// q 指向 p 的后继结点
    head->next = NULL;///head置成空表
    while(p != NULL)///当 p 为空表时结束循环
    {
        p->next = head->next;
        /// p 所指向结点插入头结点后,即把p插到头结点后面
        head->next = p;
        ///令头结点的指针域指向p,完成结点插入
        p = q;///指针 p 后移
        if(q != NULL)  q = q->next;
        ///当 q 指向不为空时, 指针 q 后移
        ///当 q 指向NULL时, q 没有指向结构体,这时是不存在q->next的
    }
}

此外,有一道链表逆置的题目,链接如下:

 

数据结构实验之链表三:链表的逆置

https://blog.youkuaiyun.com/weixin_44143702/article/details/86599990

文章中包括问题描述以及答案代码

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值