数据结构-单向链表倒置

链表结构体

typedef int datatype; 
 
    typedef struct node{
 
    datatype data; // 数据
    struct node *next;// 指向下一个结点
    
}listnode,*linklist;

在这里插入图片描述

由于自己很久没想通这里是怎么运行的,所以将具体步骤以代码加图的形式表示,没想通的原因主要在于 p = q;
由于马虎没有想第n次循环。

下面为具体代码实现及图解

链表倒置实现部分

void list_reverse(linklist Head)
{
    linklist p, q;
    
    p = Head->next; 
    Head->next = NULL; 
    
    while(p)
    {
        q = p; 
        p = p->next; 
        
        q->next = Head->next; 
        Head->next = q;
    }
}

预先给定链表的数据为:
在这里插入图片描述

p = Head->next;  // 将头节点指向的复制一份

在这里插入图片描述

Head->next = NULL;  

在这里插入图片描述
进入while循环(当p不为空执行)

q = p; 

在这里插入图片描述

p = p->next;  // p指向下一个节点,待第二次循环 p = q;时操作使用

在这里插入图片描述

q->next = Head->next; 

在这里插入图片描述

Head->next = q;

在这里插入图片描述
若还不懂,可按下面操作敲一下,自然就懂了(手动狗头)
在这里插入图片描述
输出如下图
在这里插入图片描述

如有错误还望批评指正

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值