首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

DS链表--结点交换 C++

题目描述 用C++实现含头结点链表,然后实现链表的两个结点交换位置。...注意不能简单交换两个结点包含数据,必须通过修改指针来实现两个结点的位置交换 交换函数定义可以参考: swap(int  pa, int pb)  //pa和pb表示两个结点链表的位置序号 swap...输出 第一行输出链表创建后的所有数据,数据之间用空格隔开 第二行输出执行第1次交换操作后的链表数据,数据之间用空格隔开 第三行输出执行第2次交换操作后的链表数据,数据之间用空格隔开 如果发现输入位置不合法...int data; ListNode * next; ListNode() { data = -9999, next = NULL; } }; class LinkList { //带头结点链表...,位置从0到n,0是头结点,1是首结点,n是尾结点 private: ListNode * head; //头结点 int size; //表长 public: LinkList();

20720
您找到你想要的搜索结果了吗?
是的
没有找到

C++ 不忘@必有回响之链表

本文聊聊基于链表形式的数据查询、插入、删除操作。2. 链表单链表的特点是结点中仅存储数据本身以及后驱结点的地址,所以链表的结点只有 2 个域:存放数据信息,称为数据域。...如下图描述了链表结点的存储结构:图片C++中可以使用结构体描述结点:typedef int dataType;//结点struct LinkNode{//数据成员 dataType data;//后驱结点的地址...链表还应该提供维护整个结点路的基本操作算法(抽象数据结构):/** 链表类*/class LinkList {private://头指针LinkNode *head;//链表的长度int length...一般在描述链表时,都会提供空白头结点。2.2 创建链表创建链表有 2 种方案:创建过程中,新结点替换原来的头结点,成为新的头结点,也称为头部插入创建方案。如构建数据为{4,9,12,7}的链表。...尾部插入创建链表,创建时的新结点替换原来的尾结点。如构建数据为{4,9,12,7}的链表。

29520

c语言 | 链表的实现

今天分享的是链表。准确的说,链表不算是C语言中的内容,而是属于数据结构的内容,因为它没有新的知识点,只是利用了结构体和指针等的知识。...但是它在C语言中应用还是很广泛的,在RTOS中,也是非常多的地方使用到了链表。今天暂时说一下链表的实现和简单应用,下一节当中再介绍双链表。 首先,要对链表有个概念。...链表其实是对数组的扩展,数组是为了存储很多个数据而产生的,但是它有两个缺陷,第一个缺陷就是数组里面所有的元素都是同样的类型,为了解决这个问题,产生了结构体。...说明:在本次实验中,使用的是vscode编辑器,编译环境是gcc,不建议使用VC6.0,因为VC6.0使用的c语言标准太老了,很多语法都不支持,并且,VC6.0使用体验极差,没有代码高亮功能等等。...所以,推荐使用vscode编辑器,也可以使用windows自带的编译器,打开cmd终端,使用gcc命令编译.c文件,生成.exe可执行文件后执行即可。

2K30

C语言实现链表

文章目录 链表常规操作 定义链表结构体 构造链表 头插法实现 尾插法实现 链表的头尾插法详解 链表判空 计算链表长度 遍历链表 表头、尾插法构造效果 链表指定位置插入结点 链表指定位置删除结点...链表的头尾插法详解 为了不让文章篇幅过长,关于表头尾插法的更多具体内容请观看我的另一篇博客 链表的头尾插法详解 链表判空 /* * 链表判空 * list 接收链表 */ int ListEmpty...= NULL){ printf("%d\t", p -> data); p = p -> next; } printf("\n"); } } 表头、尾插法构造效果 int main...链表指定位置插入结点 代码实现 /* * 链表指定位置插入结点 * list 链表 * data 要插入的结点的数据 * pos 结点插入的位置(逻辑位置(1,2,3,...)) */...():5 Travel():2 4 8 6 12 源代码 源代码已上传到 GitHub Data-Structure-of-C,欢迎大家下载 C语言实现数据结构

1.9K41

C语言 | 建立链表,输出各结点中的数据

例42:C语言实现一个简单链表,它由3个学生数据的结点组成,要求输出各结点中的数据。 解题思路:读者在学习这道例题的时候,应该首先分析三个问题。 各个结点是怎么样构成链表的?...int num; //学号    float score;//成绩    struct student *next; }; int main()//主函数  {   struct student a,b,c;...=10107;//学号赋值    c.score=85.0;//成绩赋值    head=&a;//将第1个结点的起始地址赋给头指针head   a.next=&b;//将第2个结点的起始地址赋给第1个结点的...next成员   b.next=&c;//将第3个结点的起始地址赋给第2个结点的next成员    c.next=NULL;//第3个结点的next成员赋给null   point=head;   do...C语言 | 建立链表,输出各结点中的数据 更多案例可以go公众号:C语言入门到精通

1.2K2418

链表、头指针、头结点

图1 线性链表的逻辑状态 由上述描述可见,链表可由头指针来唯一确定,在C语言中可用“结构指针”来描述。...它的特点是表中最后一个节点的指针域指向头结点,整个链表形成一个环。由此,从表中任一结点出发均可找到表中其他结点,如图3所示为的循环链表 。 ?...在C语言中可描述如下: //-----线性表的双向链表存储结构----- typedef struct DuLNode{       ElemType   data;   struct DuLNode...  *prior;   struct DuLNode  *next;   }DuLNode, *DuLinkList;   和的循环表类似,双向链表也可以有循环表,如图5(c)所示,链表中存有两个环...,图5(b)所示为只有一个表头结点的空表。

1.2K70

Go实现双向链表 | Redis 队列的实现

1.3 循环链表 循环链表是与单向链表一样,是一种链式的存储结构,所不同的是,循环链表的最后一个结点的指针是指向该循环链表的第一个结点或者表头结点,从而构成一个环形的。...循环链表的运算与链表的运算基本一致。所不同的有以下几点: 1、在建立一个循环链表时,必须使其最后一个结点的指针指向表头结点,而不是像链表那样置为NULL。...2、在判断是否到表尾时,是判断该结点域的值是否是表头结点,当域的值等于表头指针时,说明已到表尾。而非象链表那样判断域的值是否为NULL。...1.4 双向链表 [双向链表] 双向链表其实是链表的改进,当我们对链表进行操作时,有时你要对某个结点的直接前驱进行操作时,又必须从表头开始查找。这是由链表结点的结构所限制的。...因为链表每个结点只有一个存储直接后继结点地址的域,那么能不能定义一个既有存储直接后继结点地址的域,又有存储直接前驱结点地址的域的这样一个双结点结构呢?这就是双向链表。

1.3K51

【数据结构】C语言实现

栈的C语言实现 前言 大家好,很高兴又和大家见面啦!!!...之后我们也是详细的介绍了如何通过C语言来实现一个共享栈。 在今天的内容中,我们将来探讨一下对内存空间的使用更为灵活的栈,以及如何通过C语言来实现一个栈。下面我们就一起来看一下吧!!!...通常我们采用不带头结点链表来实现栈,为了复合栈的操作特性,于是规定了链表的所有操作都只能在表头进行,头指针指向栈顶元素,如下所示: 既然是链表,那我们就可以仿照链表的数据类型格式来定义栈的数据类型...既然是链表,那我们就可以通过StackNode与LinkStack来区分整个栈与栈的结点,下面我们就来看一下如何通过C语言实现栈的基本操作; 二、栈的初始化 这里我们想要通过不带头结点链表来实现一个栈...测试结果如下所示: 从结果中我们可以看到,我们成功通过C语言实现了栈的初始化到销毁的全部操作。

15410

零基础玩转C语言链表

下图为最一简单链表的示意图: 第 0 个结点称为头结点,它存放有第一个结点的首地址,它没有数据,只是一个指针变量。...链表中的每一个结点都是同一种结构类型。 指针域: 即在结点结构中定义一个成员项用来存放下一结点的首地址,这个用于存放地址的成员,常把它称为指针域。...在第一个结点的指针域内存入第二个结点的首地址,在第二个结点的指针域内又存放第三个结点的首地址,如此串连下去直到最后一个结点。最后一个结点因无后续结点连接,其指针域可赋为 0。...而使用动态分配时,每个结点之间可以是不连续的(结点内是连续的)。结点之间的联系可以用指针实现 例如:每一次分配一块空间可用来存放一个学生的数据,我们可称之为一个结点。...head 为头指针,pf 为指向两相邻结点的前一结点的指针变量。pb 为后一结点的指针变量。

67430

C语言实现链表逆置

学完C语言你会发现真的不难,可能就指针有点绕,其余的都是小打小闹。链表是数据结构里的内容,数据结构和算法是程序设计的核心,也是学IT这行必须掌握的内容。...任务描述 本关需要你设计一个程序,实现链表的逆置。 链表的逆置有两种方法:头插法和就地逆置法,这两种方法虽然都有逆置的效果,但还是有着不小的差别。...头插法 逆置链表初始为空,表中节点从原链表中依次“删除”,再逐个插入逆置链表的表头(即“头插”到逆置链表中),使它成为逆置链表的“新”的第一个结点,如此循环,直至原链表为空。...就地逆置法 先假定有一个函数,可以将以head为头结点链表逆序,并返回新的头结点。...利用这个函数对问题进行求解:将链表分为当前表头结点和其余部分,递归的过程就是,先将表头结点从链表中拆出来,然后对其余部分进行逆序,最后将当前的表头结点链接到逆序链表的尾部。

2.9K30

2.3 线性表的链式表示和实现

3、以上两部分信息组成数据元素ai的额存储映像,称为结点。它包括两个域,其中存储数据元素信息的域称为数据域,存储直接后继存储位置的域称为指针域。 4、指针域中存储的信息称做指针或。...n个结点链结成一个链表,即线性表的链式存储结构。 5、由于链表大的每个结点中只包含一个指针域,故又称为线性链表或链表。 02循环链表 1、循环链表是另一种形式的链式存储结构。...例如将两个线性表合并成一个表时,仅需将一个表的表尾和另一表的表头相接。 03 双向链表 1、双向链表的结点中有两个指针域,其一指向直接后继,另一指向直接前趋。...2、和的循环表类似,双向链表也可以有循环表。...C语言 | 三目运算判断大写 更多案例可以go公众号:C语言入门到精通

3012423
领券