**

以下为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 链表逆序 反转链表相关推荐

  1. python单向链表逆序_链表逆序-Python实现

    题目描述: 给定一个带头节点的单链表,将其逆序.即如果单链表原来为head->1->2->3->4->5->6->7,那么逆序后变为head->7-&g ...

  2. 链表逆序 java_链表逆序(JAVA实现)

    题目:将一个有链表头的单向单链表逆序 分析: 链表为空或只有一个元素直接返回: 设置两个前后相邻的指针p,q,使得p指向的节点为q指向的节点的后继: 重复步骤2,直到q为空: 调整链表头和链表尾: 图 ...

  3. python单链表逆序_python链表倒序

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python 实现双向链表(图解)----双向链表双向链表也叫双链表,是链表的一 ...

  4. 链表逆序的三大方法(Python实现)

    链表逆序的三大方法 更多文章代码详情,可以查看博主: GitHub地址:https://github.com/TheAlgorithm-SimpleChinese/Python 个人网站:https: ...

  5. C++实现链表逆序打印、链表反转

    //题目:C++实现链表逆序打印.链表反转 // 如何将链表逆序,取决于题目的要求.如果面试官只要求打印,一般不改动链表结构为好,如果要求改变链表的方向,则需要改变结构,再顺序打印. // 方法1:只 ...

  6. 【链表】C++链表反转、链表逆序打印

    转载地址:http://blog.csdn.net/yebanxin/article/details/51942598 题目:C++实现链表逆序打印.链表反转 如何将链表逆序,取决于题目的要求.如果面 ...

  7. 【链表】C++链表反转、链表逆序打印(三)

    题目:C++实现链表逆序打印.链表反转 如何将链表逆序,取决于题目的要求.如果面试官只要求打印,一般不改动链表结构为好,如果要求改变链表的方向,则需要改变结构,再顺序打印. 方法1:只逆序打印,不改变 ...

  8. 链表逆序(反转链表)

    链表逆序(反转链表) 一道很基础的算法题,做一下思路的分享和代码的实现,也算是自己学习的一份笔记,如有不正,请大佬们指正. class ListNode {int val;ListNode next; ...

  9. c语言将一个已知头结点的单链表逆序_C语言数据结构实现链表逆序并输出

    C语言数据结构实现链表逆序并输出 将一个链表逆序并输出.我用了两种方法来实现,第一种是借助了一个新的空链表:第二种是在原来链表的基础上直接实现逆序. 实例代码: 头文件: #include #incl ...

最新文章

  1. 微软压力测试工具 web application stress
  2. 关闭swap的危害——一旦内存耗尽,由于没有SWAP的缓冲,系统会立即开始OOM
  3. 进程知识点,只需这一篇
  4. php28,ajax2—php(28)
  5. 一键部署ETCD集群脚本
  6. weblogic部署启动时报错(weblogic.application.ModuleException)
  7. JavaCore/HeapDump文件分析工具
  8. 二分法求函数零点:(递归方法和非递归方法)
  9. 使用segue进行页面跳转
  10. python高级函数_python高级之函数
  11. 宇枫资本工薪族理财启发
  12. 马斯克狠狠地给马云上了一课 | 对话全文实录
  13. Lvm linux磁盘分区管理(多个分区合并成一个)
  14. Android 获取Usb设备类型
  15. Hi3531 平台开发,Hi3532 平台开发
  16. squid缓存服务器 ACL访问控制 传统代理 透明代理 squid日志分析 反向代理
  17. java编译器:必须对其进行捕获或声明以便抛出
  18. Matlab中如何将长字符串换行写
  19. Hydro李天放:为了区块链我曾拒绝了李开复
  20. 你所需要知道的项目管理知识

热门文章

  1. powerlink介绍
  2. 湾区潮涌·香港向前 | 香港科大副校长汪扬:用好一国两制制度优势,香港要成数字经济接轨世界桥梁...
  3. IHE DICOM测试说明
  4. 2020年蓝桥杯第一次省赛
  5. 软件网关工业生产设备PLC数据采集转存数据库记录仪IOT gateway
  6. java 中的静态变量,静态代码块,动态代码块,构造方法执行顺序的深入探究
  7. 12个最佳WordPress预订和保留插件
  8. java Excel导入(兼容格式xls和xlsx)
  9. linux 进入gedit命令,linux中gedit命令报错的案例分析
  10. ubuntu gedit找不到命令