数据结构:单链表(逆序)
来源:互联网 发布:淘宝优惠券微信公众号 编辑:程序博客网 时间:2024/06/08 20:01
1 .单链表的逆序操作是链表中的一个重要操作,也是面试中不可缺少的一个环节,几乎许多涉及到链表的面试题中都会提到如何将一个链表进行逆序的操作考点;下面采用“迭代循环”的方式来实现将一个链表进行逆序,
如链表中原来的各节点值分别为:
A B C D E
逆序后打印为:
E D C B A
------------------------------------------------------- Function 链表逆序 ------------------------- ReverseLinkList -----------------------------------------------------/********* 链表逆序 *************//****** typedef void * LinkList *****/void Reverse_LinkList(LinkList list) { struct LList *mPtr = (struct LList*)list; struct LinkNode *mPre = NULL; //指向NULL struct LinkNode *mPcur = mPtr->header.next; struct LinkNode *mPtmp =NULL; if (NULL == list) { return; } while (mPcur != NULL) { mPtmp = mPcur->next; //缓存下一个节点 mPcur->next = mPre; mPre = mPcur; mPcur = mPtmp; } mPtr->header.next = mPre; }
图(1) 链表中各节点值和节点的顺序
图(1)
图(2)链表逆序后的效果:
图(2)
实现这个链表逆序的思路和过程就是从头结点的下一个节点(即首节点)开始,依次改变指针的指向;其详细的流程如下图:
步骤(1)
/******* 指向NULL *******/struct LinkNode *mPre = NULL; /********* 指向首节点 *****/struct LinkNode *mPcur = mPtr->header.next; /******** 辅助指针,保存mPtr所指节点的下一个节点 ***********/struct LinkNode *mPtmp =NULL; 1.首先让mPcur指针指向首节点的下一个节点;因为会改变mPcur指针的指向,所以得借用一个辅助指针mPtmp;让mPtmp指针保存mPcur指针所指向的下一个节点值;2.然后改变mPtr的指向,让其指向指针mPre(为NULL),让这个节点称为当前的尾节点;3.改变mPtr指针的指向,让其指向mPcur,这样while每循环一次,就让mPtr向前不断地移动,直到最终为NULL;4.每改变一次mPcur的指向,就让mPcur指向下一个节点;最终mPcur == NULL时,mPtr刚好为最后一个节点;如下图:
1 0
- 数据结构:单链表(逆序)
- 数据结构--单链表的逆序
- 数据结构--单链表逆序输出
- 数据结构 单链表逆序
- 【数据结构】单链表逆序
- 数据结构基础--单链表逆序
- 【数据结构】Java单链表的逆序
- 数据结构之链表:实现单链表的逆序 (1)
- 数据结构——20 单链表逆序
- 数据结构(二)单链表的逆序(带头节点)
- 【数据结构】(树套树)BZOJ3295动态逆序对
- 数据结构题典009:递归实现单链表逆序数出(ANSI C)
- 数据结构之链表:实现单链表的k逆序(2)
- 数据结构java 单词逆序
- 单链表逆序(转载)
- 单链表反转(逆序)
- 程序员面试宝典之数据结构基础----单链表的逆序打印
- 算法设计和数据结构学习_8(单链表的递归逆序)
- MySql面试题
- C#4.0中的元组对象Tuple
- 第十五届北京师范大学程序设计竞赛决赛 D. Disdain Chain【思维】
- T
- c++第五次实验
- 数据结构:单链表(逆序)
- 3856: Monster
- 异步验证用户名重复的情况
- 数据结构_图_思维导图
- Java笔记——初始化和清除
- Sql优化
- JDK的下载安装
- 44-批量输入异常
- Java之FileChannel类的理解和使用