单链表的逆置

本文介绍了如何通过迭代方式逆置单链表,详细解析了逆置过程中的关键步骤,包括指针移动和节点指向的调整,最后给出了一个用栈实现的辅助增例,以帮助更好地理解链表逆置的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单链表的逆置(注:本代码没有头结点)

1.首先按照正常顺序 p1 , p2 ,p3

2.然后在p2 -> next = p1;的时候已经实现第一步逆转(这个时候p2的next已经指向了p1)

3.然后在依次将指针右移 p1 = p2;p2 = p3;(给本人理解:地址的赋值是指向,和值传递不同)

4.这样原来的首节点已经是末结点了,把它的next指针置空作为结尾。

5.把移动到最右的p1作为首节点返回。

//链表的就地逆序
Linklist reverseList(Linklist phead)
{
    Linklist p1,p2,p3;
    p1 = phead;            // 这里指的是没有头结点,如果有头结点,那么应该是p1 = phead ->next;
    p2 = p1 ->next;
    while(p2)              // 这里最后p2要挪到最后,所以以它为终止条件
    {
        p3 = p2 ->next;    // 这一步是保证指针右移的关键
        p2 ->next = p1;    // 这里是在每一步都在向左指
        p1 = p2;
        p2 = p3;
    }
    phead ->next = NULL;   // 设置为末结点

    phead = p1;
    return phead;
}<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值