当前位置:   article > 正文

C语言 用迭代与递归分别实现单链表反转_如何将单列表反转c语言

如何将单列表反转c语言

一、前言

相信许多小可爱在刚接触链表的时候都会接触一个问题——如何不借助辅助链表实现单链表的反转,也许看到这里之前你一定很头疼,但是别急,看完这篇,你会发现链表竟是那么神奇

二、迭代法

1、算法原理

我们进行反转的思路是通过把原链表的头结点的下一个结点拎出来,然后让他成为新的头节点,当原来的头结点成为尾结点的时候就说明反转完成了。
在反转之前,我们假设链表是这样的
111
没错,我们要实现的是头节点存数据的单链表的反转,习惯头节点不存数据的小可爱也不必担心,基本原理是类似的,到时候根据原理自己写出来的时候相信你一定会感悟颇深的。
好的,回归正题。
我们首先做的一步工作非常的简单——先判断链表是否为空,如果是个空链表,那还反转个啥呀?直接咋来的咋给他返回回去,剩下的时间就可以摸鱼啦!(手动兴奋)
哈哈,开个玩笑,当链表不为空的时候,应该怎样操作呢?
首先,我们用一个flag记录下原来链表中的头节点。
在这里插入图片描述
紧接着,用一个newNode记录下flag的下一个元素,即flag->next,这就是我们这次循环要操作的元素了
在这里插入图片描述
接下来就到重头戏了,屏住呼吸,我们让flag->next=newNode->next,也就是把“2”这个结点从链表中删除掉。
在这里插入图片描述
将此结点从链表中先除掉是为了让他可以成为新的头节点而不影响其他结点。
在这里插入图片描述
之后我们让链表的头节点(head)指向这个被操作的结点,也就是“2”,既然操作之后此节点成为了新的头结点,那自然是要让头结点指向这个结点了呀。
在这里插入图片描述

自此,我们迭代的第一次成功完成了(

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/209920
推荐阅读
相关标签