单链表反转/逆序
来源:互联网 发布:都市小说改编的网络剧 编辑:程序博客网 时间:2024/05/29 17:30
单链表反转 / 逆序有两种方法:非递归法和递归法,下面介绍两种方法的实现过程。
单链表结构定义如下:
typedef struct node{ int data; //数据域 struct node *next; //指针域,存储下一个结点的地址}L, *ListP;
非递归方法
将头结点的下一个结点指向头结点,然后将头结点指向它的下一个结点,重复此过程,直到头结点的下一个结点为NULL。移动过程中需要保存头结点的下一个结点,具体过程如下图。
实现代码:
ListP* ReverseList(ListP* head) { if (!head || !head->next) // 链表空或只有一个结点 { return head; } Node* p = head; Node* q = p->next; // 保存头结点的下一个结点 head->next = NULL; while (q) { p = q; q = q->next; // 移动指针p和q p->next = head; // 接上新的结点 head = p; // 更新头结点 } return head; }
递归方法
将最后一个结点作为新的头结点,依次将前面的结点连接到新的头结点后面。
实现代码:
ListP* ReverseList(ListP* head) { if (!head || !head->next) // 链表空或只有一个结点 { return head; } Node* newhead = ReverseList(head->next); // 最后一个结点作为新的头结点 head->next->next = head; // 头结点接到新的头结点后面 head->next = NULL; return newhead; }
0 0
- 单链表逆序反转
- 单链表反转(逆序)
- 单链表逆序/反转
- 单链表反转/逆序
- 单链表逆序 也叫反转
- 逆序反转单链表 Python 版
- 【链表】逆序输出单链表(单链表反转)
- 单链表反转/逆序的两种方法
- 单链表反转/逆序的两种方法
- 单链表反转/逆序的两种方法
- 单链表反转/逆序的两种方法
- IO逆序反转输出
- 反转问题(逆序)
- 单链表反转/逆序的三种方法(整理)
- 单链表的反转/逆序的三种方法
- 一种简单的单链表逆序、反转的方法
- 剑指offer-16:反转链表(单链表逆序)
- String反转和逆序(C#)
- shell命令 grep不以某字符开头、ssh远程执行命令返回结果、ssh远程执行多个命令输入文件
- [算法学习笔记] AVL树----带有平衡条件的二叉搜索树
- HDU 4586
- 使用 CXF 做 webservice 简单例子
- Mysql学习总结(4)——MySql基础知识、存储引擎与常用数据类型
- 单链表反转/逆序
- AndroidStudio插件之GsonFormat
- Linux执行可执行文件提示No such file or directory的解决办法
- Reveal的使用--整理自唐巧的《iOS开发进阶》
- java旅行第三天
- Mysql学习总结(5)——MySql常用函数大全讲解
- uva10269
- android studio menu
- 如何为rsyncd.conf增加一个module