数据结构之双链表

数据结构-第八讲 链队列 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表,链队列就是队列的链式存储。进行插入操作的端称为队尾,进行删除操作的端称为队头。链队列是指采用链接存储结构实现的队列。队列中的每个元素单独占有相应大小的存储空间。每个存储单元包括所需要存储的数据,以及下个存储单元的地址指针。 阅读详情

昨天的插入貌似应该有&不过我给的参数是头结点的又没有关系.纠结一下.明天看看

创建.排序和打印之.空指针问题也没有改.

Code:
  1. #include"stdafx.h"  
  2. #include<stdlib.h>  
  3. #include "stdio.h"  
  4. #include <iostream>  
  5.   
  6. using namespace std;  
  7. typedef int Type;  
  8. typedef struct DuLNode{  
  9. Type data;  
  10. struct DuLNode *lLink,*rLink;  
  11. }DuLNode,*DuLinkList ;  
  12. DuLinkList * DulList;//头结点  
  13.   
  14. //尾插法建立  
  15. DuLinkList CreatLinkList()  
  16. {  
  17. DuLinkList L=new DuLNode;  
  18. L->lLink=L->rLink=0;//空表  
  19. L->data=100;//测试代码  
  20. DuLNode *Node,*rear=L;  
  21. Type value;//数据类型  
  22. cin>>value;  
  23. while(value!=-1)//-1是结束标志  
  24.     {  
  25.     Node=new DuLNode;//??这里是否会失败?空指针?  
  26.     if(0==Node) break;//??  
  27.     Node->data=value;  
  28.     Node->lLink=rear;  
  29.     rear->rLink=Node;//L?  
  30.     rear=Node;//r指向新的尾结点  
  31.     cin>>value;  
  32.     }  
  33. rear->rLink=L;  
  34. L->lLink=rear;  
  35. return L;  
  36. }  
  37.   
  38. //排序单调不减  
  39. void sortDuLNode(DuLinkList& L){  
  40.     //头结点没数据  
  41.     DuLinkList M=L->rLink;//标记测试 首元结点  
  42.     DuLinkList rear=L->lLink;  
  43.     DuLinkList j=M;  
  44.     //起泡排序  
  45.     while(rear!=L){  
  46.         while(j!=rear){  
  47.             if( (j->data)>(j->rLink->data) ) swap(j->data,j->rLink->data);  
  48.                 j=j->rLink;  
  49.         }  
  50.         j=M;  
  51.         rear=rear->lLink;  
  52.     }  
  53.   
  54.   
  55.   
  56. }  
  57.   
  58. void swap(Type& i,Type& j){  
  59. Type temp;  
  60. temp=i;  
  61. i=j;  
  62. j=temp;  
  63. }  
  64.   
  65. void printDuLNode(DuLinkList L){  
  66.     //头结点没数据  
  67. DuLinkList M=L->lLink;//尾结点  
  68. L=L->rLink;//第一个数据结点  
  69. while(M!=L)  
  70.     {  
  71.     cout<<L->data<<endl;  
  72.     L=L->rLink;  
  73.     }  
  74.     cout<<L->data<<endl;//打印尾结点  
  75. }  
  76.   
  77. int main(){  
  78. DuLinkList M;  
  79. //声明函数  
  80. DuLinkList CreatLinkList();  
  81. void swap(Type &i,Type&j);  
  82. void sortDuLNode(DuLinkList& L);  
  83. void printDuLNode(DuLinkList L);  
  84. //  
  85. M=CreatLinkList();  
  86. //swap(M->rLink->data,M->rLink->rLink->data);  
  87. //printDuLNode(M);//测试代码  
  88.   
  89. sortDuLNode(M);  
  90. printDuLNode(M);  
  91.   
  92. system("PAUSE");  
  93. return 0;  
  94. }  
  95.   
  96. ///  

 

【Leetcode】269.火星词典(Hard) 应用拓扑排序 阅读详情

相关推荐

[金仓数据库V8R6]更换授权

上传授权,使用mv license_xxx_0.dat /home/kingbase/KingbaseES/license.dat替换每个授权,并使用ls -l license.dat确保替换前后属主和权限不变。根据步骤1的数据目录位置,执行/home/kingbase/KingbaseES/Server/bin/sys_ctl -D /home/kingbase/KingbaseES/data reload使新的授权文件生效。该参数意义为授权剩余有效天数,查询结果为新授权中有效期间的天数即为替换成功。

l04050924的博客 3712

数据结构:线性表(链表)

链表中第一个结点(Node)的存储位置叫做头指针,最后一个指针指向NULL(无后继指针)。两种实现方法:数组(顺序存储)和链表(链式存储),显然,链表实现更加具有效率。此时,rear->next->next==head->next。结点由存放数据元素的数据域和存放后继元素地址的指针域组成。数组模拟单链表感兴趣的可以自己去搜索下,这里不再展开。在单链表的每个结点中在设置一个指向其前驱的指针域。线性表(List):线性的,依次的,一列。头指针前存在头结点,一般存储公共信息。前天停电摆一天,昨天琐事忙一天,寄。

m0_73687800的博客 320

基于C#的跨平台上位机开发:一次编写,多平台运行

摘要: 本文探讨了如何利用C#进行跨平台上位机开发,以适配Windows、Linux、macOS等多平台需求。通过分析传统单平台开发的局限性(如API差异、硬件接口兼容性),提出基于.NET 5/6/7的解决方案,重点推荐Avalonia(类WPF的跨平台UI框架)和GtkSharp(基于GTK+)实现图形界面。同时,针对硬件通信需求,介绍了System.IO.Ports串口通信和LibUsbDotNet的跨平台支持,并强调多平台调试(VS Code、Docker)的重要性,最终实现一次编码、多端部署的高效

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1411

C语言丨线性表(三):双链表

本文在介绍线性表的基本概念的基础上,重点介绍双链表及相应的算法。

weixin_60921752的博客 1529

开源libmodbus编译为32位和64位动态库

libmodbus 是支持Linux,Mac OS X,window 的一个开源库,支持modbus TCP和RTU 两种模式。

lemontree1945的博客 1923

在 Ubuntu 22.04 上配置 SonarQube 与 CI/CD 流水线实现自动化代码审查

本文详细介绍了在Ubuntu 22.04系统上配置SonarQube并与CI/CD流水线集成的完整流程,实现自动化代码审查。从环境准备、数据库配置到核心参数调优,再到与Jenkins和GitHub Actions的深度集成,提供了实战技巧和性能优化建议,帮助团队提升代码质量监控效率。

weixin_28829325的博客 262

数据结构学习(四)循环链表

一、定义: 循环链表是另一种形式的链式存储结构。它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。 二、分类: (1)单循环链表——在单链表中,将终端结点的指针域NULL改为指向表头结点或开始结点即可。 (2)多重链的循环链表——将表中结点链在多个环上[1]。 三、判断是非为空链表: 判断空链表的条件是 head==head->next; rear==rear->next; 四、尾指针: 用尾指针rear表示的单循环链表对开始结点a1和终端结点an查找时...

PayYingJAY的博客 717

Plant Simulation 快速建模与布局(3)——自动生成的对象 代码“安全”删除管理

《PlantSimulation快速布局建模课程》教授利用SimTalk语言实现高效建模的技术要点,包括批量对象创建、阵列布局、属性管理及自动连接功能。重点讲解对象安全删除机制,通过existsObject检查对象存在性后使用deleteObject方法删除,避免程序报错。课程提供完整代码示例,展示如何通过循环结构实现矩阵布局对象的创建与安全删除,确保代码健壮性,显著提升建模效率。

qq_31964455的博客 119

数据结构-浙江大学-栈、队列(三)

栈 栈有很广泛的应用,在函数调用、递归、表达式求值等等都要用到栈。 一个数组实现两个栈 这里,老师讲的是单向链表的头作为栈顶。 单向链表的头可以做插入、删除操作,这个很明显。 老师讲的,单向链表的尾部,只能做插入,不能做删除 但是,我们基于前面的线性链表可以知道,删除是整个链表都可以进行的操作,咋就尾部不能做删除操作了呢? 翻阅了一下手头的资料,发现: 《大话数据结构》 《王道-数据结构》 好像,只是便于操作,才是放在了单链表的头部。 而不是单链表的尾部删除后找不到前面的节点这个原因。

IOSSHAN的博客 374

卫朋:IPD流程落地——产品计划阶段拆解

IPD计划阶段拆解

产品线负责人 957

Odoo17商城微信支付模块,快速一个实现可在线支付的商城

通过集成微信支付APIv3,Odoo 系统实现了高效、安全的支付流程。Native扫码支付和Jsapi微信浏览器内直接拉起支付为用户提供了更加便捷的支付方式。同时,通过发送下单及支付消息给管理员,商家可以实时了解订单状态并进行相应处理。通过集成微信支付 结合 Odoo 系统内置的商城模块,可以为商家快速实现功能完善、高效的电商解决方案。

AaronZZH 的博客 2268

数据结构-双链表(图解)

双链表是一种常用且重要的线性数据结构,它在计算机科学和软件工程中扮演着不可或缺的角色。相较于单链表,双链表的每个节点包含两个指针,分别指向其前驱节点(previous node)和后继节点(next node),这一特性使得双链表在数据操作上具有更高的灵活性。

2302_78381559的博客 4058

基于STM32设计的温室大棚种植监测系统(onenet+GPRS通信)

当前所设计的温室大棚种植监测系统基于STM32单片机开发,它能够对温室大棚内的温度、湿度、光照强度、土壤湿度、二氧化碳含量等环境参数进行实时监测,并将数据传输至OneNET云平台,实现了远程监测和管理。该系统具有体积小、功耗低、可靠性高等特点,适合在温室大棚等场合使用。

7873

学习笔记—数据结构—双链表

双链表又称带头双向循环链表,它是一种特殊的数据结构,它结合了双向链表和循环链表的特点。在双链表中,每个节点除了拥有指向下一个节点的指针外,还拥有指向上一个节点的指针。此外,列表的头节点和尾节点通过这些指针相互连接,形成一个闭环。这种结构允许从任何一个节点开始,既可以向前遍历,也可以向后遍历,直到回到起点,从而实现高效的双向遍历。每个节点包含数据部分和两个指针部分,分别指向前一个节点和后一个节点。头节点是双向循环列表的起始点,它的前驱指针指向自己,后继指针也指向自己,形成一个闭环。

2401_83231468的博客 889

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

数据结构复习之双链表的那些代码

【代码】数据结构复习之双链表的那些代码。

m0_63513275的博客 567

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

数据结构-双链表详解

#include<stdio.h> #include<malloc.h> typedef struct DNode { int data; struct DNode *prior; struct DNode *next; }DNode, *DLinkList; //β²å·¨½¨Á¢Ë«Á´±í void Create_DLinkList(DLinkList &a...

快乐的小小程序猿 1373

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【数据结构】双链表实现

实现双链表以及双链表的应用,单链表和双链表的对比。

qq_55829345的博客 1996

[数据结构]双链表实现 LinkedList

I'm Shendi,最近在整数据结构 下面是我练习的一个双链表 /** * 手写的LinkedList,实现List,双链表.<br> * 内部类 Node,代表一个结点. * @author Shendi <a href='tencent://AddContact/?fromId=45&fromSubId=1&subcmd=all&uin=1711680493'>QQ</a> * @version 1.0 */ public c

砷碲 - Shendi 3483

数据结构中实现双链表

数据结构中实现双链表 需要实现的方法 package cn.dataStructure2.com; public interface doubleLinked { //头插法 void addFirst(Object data); //尾插法 void addLast(Object data); //任意位置插入,第一个数据节点为0号下标 b...

weixin_44007988的博客 198

数据结构双链表实现

数据结构双链表实现 //参考李春葆数据结构双链表 #include<iostream> #include<cstdlib> using namespace std; typedef int ElemType; typedef struct DNode { ElemType data; struct DNode *prior; struct DNode *next; }DLinkNode; //头插法建立双链表 void CreateListF(DLinkNode *&

qq_43620838的博客 202

数据结构——双链表

文章目录双链表题解模板 目标:掌握双链表的数据结构 双链表 来看看什么是双链表吧 双链表与单链表的区别,单链表是单项的、而双链表是有左右的 题目 Acwing 827 实现一个双链表,双链表初始为空,支持5种操作: (1) 在最左侧插入一个数; (2) 在最右侧插入一个数; (3) 将第k个插入的数删除; (4) 在第k个插入的数左侧插入一个数; (5) 在第k个插入的数右侧插入一个数 现在要对该链表进行M次操作,进行完所有操作后,从左到右输出整个链表。 注意:题目中第k个插入的数并不是指当前链表的第k

Vccyb的博客 379

数据结构--双链表

数据结构--双链表

YA10JUN的博客 640

【数据结构】2-4 双链表

双链表在单链表的基础上增加了指向前驱节点的指针,其节点结构包括数据域、前驱指针和后驱指针。双链表的初始化涉及创建头节点并设置其前驱和后驱指针为NULL。插入操作在指定节点后插入新节点,需调整新节点及其前后节点的指针。删除操作移除指定节点的后继节点,并调整相关指针及释放节点空间。双链表的遍历操作,包括按位查找和按值查找,由于不能随机存取,必须从头节点开始顺序访问,时间复杂度为O(n)。这些操作共同构成了双链表的基本功能,使其在数据结构中具有灵活性和高效性。

weixin_43192805的博客 731

数据结构——双链表的初始化及插入、删除

//双链表的相关操作 #include<stdio.h> #include<stdlib.h> typedef struct DNode{ int data; struct DNode *prior,*next; }DNode,*DLinklist; //初始化双链表 bool InitDLinklist(DLinklist &L){ L=(DNode *)malloc(sizeof(DNode)); if(L==NULL){ return false; } L->pr

Prescu的博客 861
上一篇: 数据结构C/C++线性表和单链表
下一篇: 硬盘格式化后的续集,数据已经全部找回
blacksapper
博客等级 码龄19年 20粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值