无头节点的链表.PPT

链表的排序(按照升序排列) 不同于数组,链表的排序不用改变每个节点里面的值,只需要改变节点和节点之间的连接关系。 思路1,类似选择排序,每次找出最小的,脱离原链表,插入在另一个新链表的末尾: 先把原链表中最小的元素所在的那个节点找出来,删除其在原链表的位置,自己作为新链表的第一个节点 然后在原链表中依次找到最小的那个节点,在原链表中删除,插入新链表中,插入的位置在新链表上次插入的那个节点之后。 思路2,类似冒泡排序 如果相邻元素无序,则交换,注意现在链表中交换是要改变节点的连接关系,而不是改变节点。 相邻元素交换应该为先执行删除操作,再执行插入操作 排序步骤的图示(有头节点的情况) 排序步骤的图示(有头节点的情况) void sort(struct Node **h) { struct Node *p,*h1,*q,*pmin,*pminpre,*newp; h1=(struct Node*)malloc(sizeof(struct Node));//新的头节点 newp=h1; while((*h)->next!=NULL) {//当老链表没有元素节点的时候才完毕 pmin=(*h)->next; pminpre=*h; q=pmin; p=pminpre; while(q->next!=NULL){//当老链表遍历一趟完毕,找到这一趟的最小值 q=q->next; p=p->next; if(q->datadata) { pmin=q; pminpre=p; } } pminpre->next=pmin->next;//原链表中删除节点pmin newp->next=pmin;//新链表的末尾增加节点pmin newp=pmin; newp->next=NULL; } *h=h1; //老的头节点赋值为新的头节点, 想一想为什么形参要定义为Node**h 而不Node *h } 链表的排序 上述是对有头节点的链表排序 对于仅有头指针的链表(无头节点的链表)排序要稍微复杂一些,这是由于仅有头指针链表删除一个节点的时候,要区分是不是第一个节点,是第一个节点的话要修改头指针。 单链表的逆置 将一个链表逆置 思路:将原链表元素按照顺序取出来(删除和原链表脱离的关系,但并不删除节点),然后插入在新链表的第一个元素的位置上。 对于仅有头指针和有头节点两种情况程序会有些差别: 1、有头节点的时候,每次在头节点后执行插入操作即可。 2、仅有头指针的时候,每次在头指针前面插入元素,然后更新头指针。 将一个链表逆置图示(有头节点的情况) 将一个链表逆置代码(有头节点的情况) reverse(struct Node **head) { struct Node *p,*newhead,*p1; p=(*head)->next; newhead=*head; newhead->next=NULL; while( p != NULL) { p1=p; //p1为每次取出的节点 p=p->next;//读取下一个节点 p1->next=newhead->next;//插入在新链表的表头的前面 newhead->next=p1; } *head=newhead; //将新的表头赋值给形参的表头 } 将一个链表逆置(仅有头指针的情况) 思路:将原链表第一个元素取出来(删除和原链表脱离的关系,但并不删除节点),然后作为新链表的表头节点,用一个新的头指针指向它。 然后按照顺序将原链表的每个节点取出,插入在新链表头节点的前面,同时更新新链表的头节点指针指向的位置(即执行在链表的表头插入一个元素) reverse(struct Node **head) { struct Node *p,*newhead,*p1; p=*head; newhead=NULL; while( p!=NULL) { p1=p; //p1为每次取出的节点 p=p->next;//读取下一个节点 p1->next=newhead;//插入在新链表的表头的前面 newhead=p1; //更新新链表的表头位置 } *head=newhead; //将新的表头赋值给形参的表头 } 将一个链表逆置过程的图示(只有头指针情况) 两个有序单链表的合并

无头结点单链表的逆置_无头节点的链表.PPT相关推荐

  1. 无头结点单链表的逆置_单链表的增删查 逆置 倒数第k个节点等问题

    对于单链表而言,它没有双链表那么复杂,它只有头节点,尾节点,节点数据,后继指针.在下面本人实现了 单链表的 增   删   插  查  改. #include #include #include #i ...

  2. 无头结点单链表的逆置_解析单链表逆置的多种方法 | 术与道的分享

    单链表的逆置还是很重要的,不过第一次写逆置的时候程序就直接奔溃了,因为解决与链表相关的问题总是有大量的指针操作,而指针操作的代码总是容易出错的,因此这也就成就了单链表在面试中的地位. 1.普通循环逆置 ...

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

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

  4. 无头结点单链表的逆置_从无头单链表中删除节点及单链表的逆置

    题目: 假设有一个没有头指针的单链表.一个指针指向此单链表中间的一个节点(非第一个节点, 也非最后一个节点).请将该节点从单链表中删除. 解答: 典型的"狸猫换太子", 若要删除该 ...

  5. 无头结点单链表的逆置_单链表的逆置(不带头结点)

    #include #include typedef struct node { int data; struct node *next; }Node; Node *Initiate(Node *lin ...

  6. 有头结点单链表的逆置

    [问题描述] 设有头结点单链表,编写算法实现单链表逆置. [输入形式] 第一行输入一个整数N: 第二行输入N个整数,以空格作为分隔,创建单链表: [输出形式] 输出逆置后的单链表,,元素之间以空格分隔 ...

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

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

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

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

  9. 55-将单链表原地逆置(三种方法)

    方法1:用三个指针实现单链表(有头结点)的逆置 void Reverse(HeadList *head) {if(head==NULL||head->next==NULL||head->n ...

最新文章

  1. 从白盒测试到单元测试基础原理
  2. Java-POI操作excel遇到文本字符问题处理
  3. Redis-09Redis的基础事务
  4. 成功解决ImportError: Matplotlib qt-based backends require an external PyQt4, PyQt5,问题
  5. linux 查询 lib信息,怎么查看linux是否使用 libarchive
  6. osg学习笔记(一)
  7. 【软件开发综合实验】文本压缩软件
  8. 怎么用python制作随机点名软件_python用tkinter实现一个简易能进行随机点名的界面...
  9. C++中的文件输入/输出
  10. GC.Collect
  11. PikPak磁力网盘
  12. PPT视频无法播放,编解码器不可用
  13. 东南大学计算机学院分数线,2017年东南大学录取分数线
  14. 计算机等级考试四级--数据库原理
  15. win10打开谷歌浏览器chrome,并进入kiosk模式
  16. 深入理解Java虚拟机之走进Java之Java的发展历程
  17. MySQL_12_ShardingJDBC实现读写分离与分布式事务
  18. android 复制u盘文件到手机本地_如何将手机里的文件 、照片传到手机U盘里去?...
  19. 【批处理DOS-CMD命令-汇总和小结】-显示文本文件内容(type),对文本文件的整行字符串进行排序(sort)
  20. ‘settings.xml’ has syntax errors less… 和Parent ‘org.springframework.boot’has problems less…的问题解决

热门文章

  1. 常见遥感卫星参数介绍nbsp;(转)
  2. Swift - 使用原生库进行 JSON 解析和生成
  3. mdb数据库转postgresql数据库
  4. 波束选择 Beam Selection
  5. 回溯、图论——最大团问题(求最大完全子图)
  6. JavaScript初学——实现功能:单击按钮,视频暂停,按钮图标变换
  7. 【已解决】winmm.dll被报病毒的解决方案
  8. OpenAI新上线GPT太强了,服务器瞬间挤爆,马斯克:你们太沉迷了
  9. t30服务器的技术性能,DELL PowerEdge T30微塔式服务器 配置参数
  10. autojs脚本备忘