首页
学习
活动
专区
工具
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();

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

    c语言单链表详解

    前言:     上一期一起学习了数据结构初阶的顺序表,发现顺序表有一些致命的缺点,比如部分操作时间复杂度高,还是会存在空间浪费的现象,今天为大家介绍的单链表就可以完美地解决这个问题。...Seqlist.c:函数接口文件,用来存放函数的定义。 test.c: 测试文件,在写代码过程中用来测试函数的可行性。...单链表概述及声明:     顾名思义,单链表就是将各个节点像链子一样连起来,每个节点只放一个数据,这样就完美解决了空间浪费地问题,具体地声明如下: 这样我们地数据就像下图一样被连接了起来: 下面就为大家介绍如何在这个链表中进行操作...= NULL)//找尾 { tail = tail->next; } tail->next = newnode; } } 放入test.c中测试一下: 完美实现!...while (cur) { SLNode* next = cur->next; free(cur); cur = next; } *pphead = NULL; } 最后这样一个单链表的一些基本操作就可以实现了

    12410

    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}的单链表。

    33820

    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.3K2418

    c语言 | 单链表的实现

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

    2.1K30

    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

    链表、头指针、头结点

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

    1.3K70

    C语言手撕单链表

    而单链表,顾名思义就是单向链接的链表,效果如同下图 前言: 在讲解单链表的各个接口前,很有必要讲解以下单链表的物理内存到底是如何存储的,先掌握这个,接下来的讲解就会更容易理解 头结点指向的地址就是第一个结点的总地址...第一个结点的指针域指向的是第二个结点的总地址,所以分为两个地址 一个是结点的总地址,另一个是结点总地址里面的next指针存放的指针域的地址,这个指针域的地址又指向了下一个结点的总地址。...phead, SLTDataType x); void SLTPopFront(SLTNode** phead); void SLTPopBack(SLTNode** phead);  1、遍历单链表打印函数...= NULL) { printf("%d->", cur->data); cur = cur->next; } printf("NULL"); } 2、创建单链表函数 SLTNode* BuySListNode...,直接指向新建的结点 若不为空,需要找到尾结点 TIP:何时用指针变量,何时用二级指针?

    6510

    C语言单链表OJ题(较易)

    思路: 正常遍历,找到value的值与题目中相同的结点去free掉,分为两种情况: 第一种就是头结点就是value值,直接将头节点指向next; 第二种情况就是第二个结点开始是value,需要有一个前结点指向...leetcode链接 题目描述: 给你单链表的头结点 head ,请你找出并返回链表的中间结点。...如果有两个中间结点,则返回第二个中间结点。 思路: 用快慢指针法。...fast=fast->next; slow=slow->next; } return slow; } 四、反转链表 leetcode链接 题目描述: 给你单链表的头节点...思路: 顺序遍历链表,从第一个结点开始进行尾插,注意这里的尾插不是手撕单链表里面的pushback函数,而是应该将结点一个一个取下来。

    9410

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

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

    1.4K51
    领券