所谓“就地是指辅助空间复杂度为O(1)。

解法一:将头结点摘下,然后从第一结点开始,依次前插入到头结点的后面(头插法),直到最后一个结点为止。

代码如下

LinkList Reverse (LinkList L)
{LNode *p,*r;//p为工作指针,r为p的后继以防断链p=L->next;//从第一个元素结点开始L->next=NULL;//先将头结点L的next域置为NULLwhile(p!=NULL)//依次将元素结点摘下
  {r=p->next;//暂存p的后继p->next=L->next;//将p结点插入到头结点之后L->next=p;p=r;}return L;
}

解法二:

通过若干操作将指针反转达到逆置的目的。

假设pre、p和r指向3个相邻的结点,如上图。*pre之前的结点的指针都已经调整完毕,它们的next指针都指向其原前驱结点。现在令*p结点的next域指向*pre结点,注意到一旦调整指针的指向后,*p的后继结点的链就断开了,为此用r来指向原*p结点的后继结点。

处理第一个结点时,将其next域置为NULL,。处理最后一个结点后,将头结点的指针指向它。

代码:

Linklist reserve(LinkList L)
{LNode *pre,*p=L->next,*r=p->next;p->next=NULL;//处理第一个结点while(r!=NULL)//r为空,则说明p为最后一个结点
{pre=p;//依次遍历p=r;r=r->next;p->next=pre;//指针反转
  }L->next=p;//处理最后一个结点return L;
}

转载于:https://www.cnblogs.com/wyloving/p/8298925.html

数据结构学习-带头结点的单链表就地逆置相关推荐

  1. 6-1 带头结点的单链表就地逆置 (10 分)

    6-1 带头结点的单链表就地逆置 (10 分) 本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数.L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要 ...

  2. python实现带头结点的单链表的就地逆置_6-1 带头结点的单链表就地逆置 (10 分)...

    本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数.L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要求在不新开辟节点的前提下将单链表中的元素进行逆置 ...

  3. python实现带头结点的单链表的就地逆置_带头结点的单链表就地逆置

    本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数.L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要求在不新开辟节点的前提下将单链表中的元素进行逆置 ...

  4. 带头结点的单链表就地逆置

    本题要求编写函数实现带头结点的单链线性表的就地逆置操作函数.L是一个带头结点的单链表,函数ListReverse_L(LinkList &L)要求在不新开辟节点的前提下将单链表中的元素进行逆置 ...

  5. 带头结点的单链表的逆置

    代码 //带头结点的单链表逆置.cpp #include<iostream> using namespace std; struct Node{ int data; Node* next; ...

  6. java实现单链表就地逆置,单链表的就地逆置讲解

    { List *q; List *p = L->next; L -> next = NULL; //单链表就地逆置 while (p != NULL) { q = p -> next ...

  7. 带头结点单链表就地逆置算法

    1.带头结点单链表就地逆置算法 部分函数调用参考如下:https://blog.csdn.net/qq_50504109/article/details/120288749 /*** 单向链表的逆置, ...

  8. 【AU】单链表就地逆置

    单链表就地逆置 单链表的就地逆置是指辅助空间O(1)的逆置方法,有两种方法: 第一种 普通循环(头插法重新建立带头节点的新链表) 将头结点摘下,然后从第一结点开始,依次前插入到头结点的后面(头插法), ...

  9. java实现单链表就地逆置,20. 微软面试题:单链表就地逆放

    题目是:链表操作,单链表就地逆置 分析: 这题只需要设置三个指针就搞定了,ListNode* p 表示当前指针, ListNode* fp: 上一个节点指针, ListNode * ep :下一个节点 ...

最新文章

  1. 一个资深投行女销售和低调IT创业男的故事
  2. 《深度学习的数学》笔记【各种概念】
  3. Java中List的父类与子类如何转换
  4. Python练习题14
  5. java aio聊天_JAVA aio简单使用
  6. C语言 sizeof 函数 - C语言零基础入门教程
  7. 从C/C++零基础到月入9K我用了9个月
  8. 谈谈我对正向代理和反向代理的理解
  9. php 编程祝新年快乐_第一门编程语言选什么好?
  10. Vue首页加载过慢 解决方案
  11. 优化网站设计(九):减少DNS查找的次数
  12. 张小龙是高球冠军,大前研一是物理学家:​为什么牛人在很多领域都是世界第一?...
  13. MySQL常用的关键字查询用法
  14. Java向word中插入Excel文件对象
  15. Linux内核编译、安装
  16. java好用吗_你准备好使用Java9了吗?
  17. 自学SQL网题库答案
  18. canvas插件 fabric.js 使用
  19. httPs//yy7com/a1phP,header.php
  20. 怎么把录音转文字?手把手教你转换

热门文章

  1. java中的与运算符
  2. 马斯克:人脑“带宽”有限,需要用人工智能加持提高连接速度
  3. 多线程程序在多核和单核上运行的不同
  4. c语言吧百度贴吧经典100例,C语言程序设计经典100例
  5. 单纯形法只有两个约束条件_10分钟掌握对偶单纯形法
  6. 001-SDK框架之Unity游戏调用SDK
  7. python 结构体数组 定义_一篇文章弄懂Python中所有数组数据类型
  8. 标定板标定和九点标定的区别_射频导纳物位计的标定方法
  9. mvc html编辑器,MVC3 Html编辑器助手显示旧模型值
  10. java 读取webservice_java 调用webService的各种方法