C++ Python 链表逆序 反转链表
**
以下为C++版本
**
已知链表头节点指针head,将链表逆序。(不可申请额外空间)
#include<stdio.h>
struct ListNode
{int val; //数据域ListNode* next; //指针域ListNode(int x): val(x),next(NULL){} //构造函数
};
class Solution
{public:Solution() {}~Solution() {}ListNode* reverseList(ListNode* head){//metohd-1ListNode* new_head = NULL; //指向新链表头节点的指针while (head){ListNode* next = head->next; //备份head->nexthead->next = new_head; //更新head->nextnew_head = head; //移动new_headhead = next; //遍历链表}return new_head; //返回新链表头节点
//method-2 Recursive Solution, Time:O(n) and Space: O(n)
/*if (head == nullptr || head->next == nullptr) {return head;}ListNode* p = reverseList(head->next);head->next->next = head;head->next = nullptr;return p;
*/}
};
int main()
{ListNode a(1);ListNode b(2); //将节点简单的链接,进行测试ListNode c(3); //无需构造复杂的链表操作(插入、删除)ListNode d(4);ListNode e(5);a.next = &b;b.next = &c;c.next = &d;d.next = &e;Solution solve;ListNode* head = &a;printf("Before reverse:\n");while (head){printf("%d\n", head->val);head = head->next;}head = solve.reverseList(&a);printf("After reverse:\n");while (head){printf("%d\n", head->val);head = head->next;}return 0;
}
运行结果
Before reverse:
1
2
3
4
5
After reverse:
5
4
3
2
1
**
以下为Python版本
**输入一个链表,反转链表后,输出新链表的表头
# -*-coding:utf-8-*-
class ListNode:def __init__(self, x):self.val = xself.next = Noneclass Solution:def ReverseList(self, pHead):if pHead == None:return Noneif pHead.next == None:return pHeadleftPointer = pHeadmidPointer = pHead.nextrightPointer = pHead.next.nextleftPointer.next = Nonewhile rightPointer != None:midPointer.next = leftPointerleftPointer = midPointermidPointer = rightPointerrightPointer = rightPointer.nextmidPointer.next = leftPointerreturn midPointerif __name__ == '__main__':l1 = ListNode(1)l2 = ListNode(2)l3 = ListNode(3)l4 = ListNode(4)l5 = ListNode(5)l1.next = l2l2.next = l3l3.next = l4l4.next = l5s = Solution()r1=s.ReverseList(l1)while r1:print(r1.val)r1=r1.next
运行结果为:
5
4
3
2
1
C++ Python 链表逆序 反转链表相关推荐
- python单向链表逆序_链表逆序-Python实现
题目描述: 给定一个带头节点的单链表,将其逆序.即如果单链表原来为head->1->2->3->4->5->6->7,那么逆序后变为head->7-&g ...
- 链表逆序 java_链表逆序(JAVA实现)
题目:将一个有链表头的单向单链表逆序 分析: 链表为空或只有一个元素直接返回: 设置两个前后相邻的指针p,q,使得p指向的节点为q指向的节点的后继: 重复步骤2,直到q为空: 调整链表头和链表尾: 图 ...
- python单链表逆序_python链表倒序
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python 实现双向链表(图解)----双向链表双向链表也叫双链表,是链表的一 ...
- 链表逆序的三大方法(Python实现)
链表逆序的三大方法 更多文章代码详情,可以查看博主: GitHub地址:https://github.com/TheAlgorithm-SimpleChinese/Python 个人网站:https: ...
- C++实现链表逆序打印、链表反转
//题目:C++实现链表逆序打印.链表反转 // 如何将链表逆序,取决于题目的要求.如果面试官只要求打印,一般不改动链表结构为好,如果要求改变链表的方向,则需要改变结构,再顺序打印. // 方法1:只 ...
- 【链表】C++链表反转、链表逆序打印
转载地址:http://blog.csdn.net/yebanxin/article/details/51942598 题目:C++实现链表逆序打印.链表反转 如何将链表逆序,取决于题目的要求.如果面 ...
- 【链表】C++链表反转、链表逆序打印(三)
题目:C++实现链表逆序打印.链表反转 如何将链表逆序,取决于题目的要求.如果面试官只要求打印,一般不改动链表结构为好,如果要求改变链表的方向,则需要改变结构,再顺序打印. 方法1:只逆序打印,不改变 ...
- 链表逆序(反转链表)
链表逆序(反转链表) 一道很基础的算法题,做一下思路的分享和代码的实现,也算是自己学习的一份笔记,如有不正,请大佬们指正. class ListNode {int val;ListNode next; ...
- c语言将一个已知头结点的单链表逆序_C语言数据结构实现链表逆序并输出
C语言数据结构实现链表逆序并输出 将一个链表逆序并输出.我用了两种方法来实现,第一种是借助了一个新的空链表:第二种是在原来链表的基础上直接实现逆序. 实例代码: 头文件: #include #incl ...
最新文章
- 微软压力测试工具 web application stress
- 关闭swap的危害——一旦内存耗尽,由于没有SWAP的缓冲,系统会立即开始OOM
- 进程知识点,只需这一篇
- php28,ajax2—php(28)
- 一键部署ETCD集群脚本
- weblogic部署启动时报错(weblogic.application.ModuleException)
- JavaCore/HeapDump文件分析工具
- 二分法求函数零点:(递归方法和非递归方法)
- 使用segue进行页面跳转
- python高级函数_python高级之函数
- 宇枫资本工薪族理财启发
- 马斯克狠狠地给马云上了一课 | 对话全文实录
- Lvm linux磁盘分区管理(多个分区合并成一个)
- Android 获取Usb设备类型
- Hi3531 平台开发,Hi3532 平台开发
- squid缓存服务器 ACL访问控制 传统代理 透明代理 squid日志分析 反向代理
- java编译器:必须对其进行捕获或声明以便抛出
- Matlab中如何将长字符串换行写
- Hydro李天放:为了区块链我曾拒绝了李开复
- 你所需要知道的项目管理知识
热门文章
- powerlink介绍
- 湾区潮涌·香港向前 | 香港科大副校长汪扬:用好一国两制制度优势,香港要成数字经济接轨世界桥梁...
- IHE DICOM测试说明
- 2020年蓝桥杯第一次省赛
- 软件网关工业生产设备PLC数据采集转存数据库记录仪IOT gateway
- java 中的静态变量,静态代码块,动态代码块,构造方法执行顺序的深入探究
- 12个最佳WordPress预订和保留插件
- java Excel导入(兼容格式xls和xlsx)
- linux 进入gedit命令,linux中gedit命令报错的案例分析
- ubuntu gedit找不到命令