题意:
采用带头结点的单链表,设计一个算法将其就地逆置,所谓“就地”是指辅助空间O(1)。

这里可以有两种方法做:
1.头插法且双指针
2.改变指针指向且三指针

两方法共同点:
头结点还是作为头结点。第一个结点作为尾节点。

单链表的存储结构:

typedef struct LinkList{int data;LinkList * next;}

分析:
这里先解释第二种方法:改变指针指向且三指针
将第一个结点(pre指向)置为空,作为尾节点。
然后再改变结点间的指针指向(循环完成),让pre ,p同步后移。最后将头结点接上即可

思路:
1.这里先定义三个指针pre ,p ,post
p = L->next; post用来保存p的后继结点
2.将第一个结点作为尾节点,pre->next = null;
3.通过while循环,条件为p!= null
post = p->next;
p->next = pre;//修改指针指向(逆置关键)
pre = p,p = post; //向后推
当p为空时,跳出循环,pre指向最后一个节点
4.最后,头结点接上(L->next = pre)

C代码实现:

void Reverse2(LinkList * L){LinkList * pre = L->next,*p,*post;p = pre->next;pre->next = null;while(p!=null){post = p->next;p->next = pre;//修改指针指向pre = p; p = post; //往后移}L->next = pre; //接上头结点}

单链表-逆置单链表(修改指针指向且三个指针)相关推荐

  1. 单链表-逆置单链表(头插法且双指针)

    题意: 采用带头结点的单链表,设计一个算法将其就地逆置,所谓"就地"是指辅助空间O(1). 这里可以有两种方法做: 1.头插法且双指针 2.改变指针指向且三指针 两方法共同点: 头 ...

  2. 带有头节点单链表,带有头节点单链表逆置的四种方法

    文章目录 带头结点的单链表 单链表逆置的四种做法 带头结点的单链表 链式存储结构:逻辑上相邻的数据元素,并不要求物理上也相邻: 单链表的代码实现 .h文件 #pragma once typedef i ...

  3. 单链表逆置:空间复杂度O(1)

    带头结点单链表逆置 从链表(带头结点)首个数据结点开始,重新头插法建表,将节点链接到头结点上 //单链表结点结构 typedef struct LNode {int data;struct LNode ...

  4. 数据结构03:单链表逆置

    单链表逆置 单链表原地逆置 单链表利用栈逆置 .cpp文件 运行结果 单链表原地逆置 List Reverse(List L1){/*构造链表q替代L1(使得在逆置链表的时候L1本身不变)* 构造完以 ...

  5. C语言 链表逆置四种方法 超详细

    链表逆置 C语言 创建所需的相关结构体 struct List {int date;struct List* next; }; 首先我们创建一个函数用于创建链表的. 建立创建链表的函数 struct ...

  6. 链表逆置详细讲解(图文)

    链表逆置 前言 链表逆置是初学时有困扰到我的难点. 由于链表头结点可放可不放数据,所以写代码时候 ->next 用的云里雾里. 这里讲解头结点与第一结点区分的情况,即头结点你把它看作这个 链表的 ...

  7. 面试高频题:单链表的逆置操作/链表逆序

    函数内对形参的操作并不能影响实参,函数内修改的是实参的副本.要想在函数内部修改输入参数,要么传入的是实参的引用,要么传入的是实参的地址. #include <iostream> #incl ...

  8. 程序员面试题准备(1)单链表逆置

    面试中程序测试,单链表的操作应该是比较容易出现的.单链表的一般操作,比如创建.遍历.插入.删除.清空等常规操作应该是必须掌握的操作,那么程序员面试中可能会出现"非常规"的链表操作, ...

  9. 无头结点单链表的逆置_第1章第2节练习题11 就地逆置单链表

    ## 问题描述 > 试编写在带头结点的单链表就地逆置,所谓"就地"是指辅助空间为O(1) ## 算法思想1 > 将头结点摘下,然后从第一个结点开始,依次插入到头节点的后 ...

最新文章

  1. APP不同上线情况对应的测试流程
  2. 2015-01-27
  3. 【人脸检测】学界 | 中科院自动化研究所提出 FaceBoxes:实时、高准确率的 CPU 面部检测器
  4. 跟随鼠标走的文字的html代码,跟随鼠标走的文字的HTML代码
  5. 未能加载程序集或它的一个依赖项_英伟达发布kaolin:一个用于加速3D深度学习研究的PyTorch库...
  6. 键盘录入学生信息,保存到集合中
  7. 2019阿里应届内推编程题
  8. 359B. Permutation
  9. mysql 不限定 ip_mysql 不指定 ip 的连接默认都是 localhost
  10. 运行python manage.py runserver报错现象、原因和解决办法
  11. Andorid Studio NDK 开发 - Hello World
  12. cs 5 下载地址 、视频教程、安装教程
  13. TI深度学习(TIDL)--1
  14. 电脑注册表怎么打开?
  15. 拼多多---多多果园怎么玩
  16. win10无线网卡无法连接网络
  17. python中string模块各属性以及函数的用法
  18. PDF文档分割简单方法
  19. python 中的 import
  20. [30期] 个人职业规划

热门文章

  1. C++中构造函数调用构造函数
  2. 洛谷P1919 【模板】A*B Problem升级版(FFT)
  3. TeamLab安装及使用
  4. 《Kotlin项目实战开发》第1章 Kotlin是什么
  5. 关于Unity中自带摇杆与车轮碰撞器的使用
  6. MapReduce1和Yarn的工作机制
  7. 细节:js 创建对象的几种模式举例
  8. WebForm开发常用代码
  9. HP CloudSystem:几分钟完成云系统配置
  10. 无异常日志,就不能排查问题了???