从尾到头打印单链表

题目描述

 试编写一个算法将单链表逆置,要求不能增加新节点。

分析步骤

 单链表的逆置,分析来说就是,改变链表的指向。指向后面的,反过来指向前一个。最后改变指向链表指针的值就可以了.
 将当前节点指向前一个节点,前一个节点如何去找?后面的链表应该如何标记。–>这就让我们有了思考:我们 可以用三个指针来标记当前节点、前一个节点和后面的链表,一个一个的来进行逆置,就可以啦。
这里写图片描述

代码
//逆置单链表
void InversionSLinkList(SLinkList** ppHead)
{
    SLinkList* CurPre = NULL;
    SLinkList* Cur = *ppHead;
    SLinkList* CurNext = Cur->_pNext;
    assert(ppHead);
    //空链表
    if (*ppHead == NULL)
        return;
    //非空链表
    while (CurNext != NULL)
    {
        Cur->_pNext = CurPre;

        CurPre = Cur;
        Cur = CurNext;
        CurNext = CurNext->_pNext;
    }
    Cur->_pNext = CurPre;
    *ppHead = Cur;
}
头文件及运行结果
#include <stdio.h>
#include <string.h>
#include <assert.h>

typedef int DataType;

typedef struct ListNode
{
    DataType _data;                 //当前节点中所保存的元素
    struct ListNode* _pNext;    //指向链表中下一个结点
}SLinkList, SListNode;

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值