数据结构基础--单链表逆序

本文介绍了一种不使用额外空间实现单链表逆序的方法。通过定义三个指针prev、head、next,并利用循环更新指针的方式完成逆序过程。提供完整的C语言实现代码。

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

最近同学问了一道在数据结构的课本上的题,做了很久才做出来,可见课本和基础是很重要的

题目是将一个单链表逆序但是不允许申请额外的空间做中转

思路大抵为:


初始状态:定义三个node *prev,node *head,node *next;   prev指向NULL,head指向链表的头结点A,next指向第一个结点B,将head->next指向prev即NULL,prev=head,head=next,next=head->next,经过以上变化可以将图一化成图二:


从图1到图2的代码如下:

head->next=prev;
prev=head;
head=next;
next=head->next;

这时重复上面的步骤,就可以将图2转化为图3:


然后继续重复,直到:


即head->next==NULL;为终止条件;

代码如下:

typedef struct{
    typename data;
    node *next;
}node;

node* List_Reverse(node *L)
{
    node *head=L;
    node *prev=NULL;
    node *next;
    while(head->next!=NULL)
    {
        next=head->next;
        head->next=prev;
        prev=head;
        head=next;
    }
    return prev;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值