单链表逆序的多种方式
https://www.cnblogs.com/eniac12/p/4860642.html
template<class T> void List<T>::Inverse() {if(first == NULL) return;LinkNode<T> *p, *prev, *latter; p = first->link; // 当前结点prev = NULL; // 前一结点latter = p->link; // 下一结点while(p != NULL){p->link = prev; // 当前结点指针指向前一结点prev = p; // 后移p = latter;if(p != NULL) // 如果p指针是NULL,已经满足终止条件latter = p->link;}first->link = prev;; // 最后连上附加头结点 }
https://blog.csdn.net/ljyljyok/article/details/77996029
LINK_NODE *ReverseLink(LINK_NODE *head)
{
LINK_NODE *next;
LINK_NODE *prev = NULL;
while(head != NULL)
{
next = head->next;
head->next = prev;
prev = head;
head = next;
}
return prev;
}
http://www.nowamagic.net/librarys/veda/detail/2241
/* 单链表反转/逆序 */ Status ListReverse(LinkList L) {LinkList current,pnext,prev;if(L == NULL || L->next == NULL)return L;current = L->next; /* p1指向链表头节点的下一个节点 */pnext = current->next;current->next = NULL;while(pnext){prev = pnext->next;pnext->next = current;current = pnext;pnext = prev;printf("交换后:current = %d,next = %d \n",current->data,current->next->data);}//printf("current = %d,next = %d \n",current->data,current->next->data);L->next = current; /* 将链表头节点指向p1 */return L; }
http://www.nowamagic.net/librarys/veda/detail/2242
Status ListReverse2(LinkList L) {LinkList current, p;if (L == NULL){return NULL;}current = L->next;while (current->next != NULL){p = current->next;current->next = p->next;p->next = L->next;L->next = p;}return L; }
http://www.nowamagic.net/librarys/veda/detail/2242
Status ListReverse3(LinkList L) {LinkList newList; //新链表的头结点LinkList tmp; //指向L的第一个结点,也就是要摘除的结点//参数为空或者内存分配失败则返回NULLif (L == NULL || (newList = (LinkList)malloc(sizeof(Node))) == NULL){return NULL;}//初始化newListnewList->data = L->data;newList->next = NULL;//依次将L的第一个结点放到newList的第一个结点位置while (L->next != NULL){tmp = newList->next; //保存newList中的后续结点newList->next = L->next; //将L的第一个结点放到newList中L->next = L->next->next; //从L中摘除这个结点newList->next->next = tmp; //恢复newList中后续结点的指针}//原头结点应该释放掉,并返回新头结点的指针free(L);return newList; }
单链表逆序的多种方式相关推荐
- 单链表逆序生成及逆置的完整实现
单链表逆序生成及逆置的完整实现 本例中单链表数据类型定义成int型,可更改 头文件1(1.h) 宏定义及Status类型定义 头文件2(2.h) 单链表基本操作函数与逆置函数 include" ...
- c语言单链表_C语言笔试题—单链表逆序
前情回顾 之前更多的是给大家推荐的是好用的软件,经过反思之后觉得这些东西并不是我想要的,所以从今天开始我要转变方向了,更多的往我的专业方向去发展(虽然我是个小白),当然如果有说的不对的地方,希望大家能 ...
- 通过迭代(非递归)及递归将单链表逆序
通过迭代(非递归)及递归将单链表逆序 老生常谈的问题了,不过很多地方面试还是很喜欢问这个问题.实际工程中感觉用处不大,需要逆序的存储为什么要选择单链表呢?为什么不用list(in c++)或itera ...
- c语言将一个已知头结点的单链表逆序_C语言实现单链表逆序与逆序输出实例
单链表的逆序输出分为两种情况,一种是只逆序输出,实际上不逆序:另一种是把链表逆序.本文就分别实例讲述一下两种方法.具体如下: 1.逆序输出 实例代码如下: #include #include #inc ...
- 单链表逆序输出(递归)
将单链表逆序输出 对于单链表逆序输出不改变链表结构可以考虑使用递归实现. 递归输出的主要思路为:先输出除当前节点外的后继子链表,然后输出当前结点.假如链表为:1->2->3->4-& ...
- 链表逆序 递归 java_将链表逆序(递归方式)
namespace ShopEx.CRS.Test { /// ///将链表逆序 /// public class ReverseLinkList { //入口 public static void ...
- C语言的单链表逆序和指定范围逆序
文章目录 前言 逆序 指定范围逆序 源码实现 前言 关于链表的逆置,是考察对链表指针的理解.知道了如何不实用额外空间,同时使用O(n)复杂度对链表进行逆序之后将会对链表有好理解. 同时关于如何在指定范 ...
- c语言将一个已知头结点的单链表逆序_C语言数据结构实现链表逆序并输出
C语言数据结构实现链表逆序并输出 将一个链表逆序并输出.我用了两种方法来实现,第一种是借助了一个新的空链表:第二种是在原来链表的基础上直接实现逆序. 实例代码: 头文件: #include #incl ...
- c语言实现单链表逆序算法,C语言解字符串逆序和单向链表逆序问题的代码示例...
字符串逆序上次面试碰到一个单向链表逆序的题目,幸好对字符串逆序比较熟悉,类比做出来了.字符串逆序比较简单,直接上代码: void stringReverse(char* p1,char* p2) { ...
最新文章
- 挑战杯科展上的智能车作品
- 关于Linux发行版本RedHat9中文输入法使用问题的说明
- 全球首家!B站上线“杜比视界”给UP主用,“观众眼睛要被养刁了”
- 异步任务下载apk文件并弹出对话框提示当前进度,文件下载结束后弹出安装界面
- 隐藏1:N关系和工具
- php单例型(singleton pattern)
- oracle如何检查是否rac,Oracle RAC 状态检查
- SJTU OJ 3046 足球 题解
- 蔚来辅助驾驶致死,副总裁沈斐或遇更大危机
- p8b75-m修改bios文件_傻瓜式方法:VMWARE使用NAT方式彻底解决开发板无法挂载ubuntu文件的难题...
- java web程序设计任务教程——源码(全)
- Python简答题编程题
- poi导出excel在单元格内画斜线
- 计算机动画制作 课件,第四章 计算机动画的制作与编辑-课件(PPT).ppt
- js实现雪花飘落效果
- 强化练习200题(二)正题:123
- Python视频抽帧,视频转图片帧并保存
- SK6# 上海居转户随记
- 10个预训练模型开始你的深度学习(计算机视觉部分)
- string.find()函数用法
热门文章
- 20170117小测
- HDU 2602.Bone Collector-动态规划0-1背包
- 使用MJRefresh自定义下拉刷新,上拉加载动画
- C# 连接Oracle数据库以及一些简单的操作
- 2013.8.7Java语言基础——数组
- python填表_小Python填表得到d
- 华为服务器系统蓝屏,服务器主机蓝屏
- java afconsole_Java ——基础语法
- ubuntu dhcp ping 不通 自己_??2、DHCP安装和配置
- linux静默删除文件夹,Linux常用命令10 - unzip