数据结构—链表-建立单链表
我们这里的单链表定义为char型,其他类型是一样的做法
s->next=p->next;
s这个指针指向的节点就和p的下一个节点连接起来了。
p->next=s;
注意:这两个语句不能交换
然后p->next是一个指针 s也是一个指针
s是一个指向某一个节点的指针。
p->next=s;
代表p->next指向了s指向的节点。不代表p->next和s等价
当s指向其他区域后,p->next就和s指向的区域就不同了
为了实现删除操作
是将p->next=b->next(p->next->next);
此时p就不指向b了 b相当于在这个链表之外了
但是一般我们使用一个额外的q指针=p->next 即p=b 即p指向了b指向这块位置,注意此时的b并不是实际存在的而是p->next的方式存在的,我们使用q代表我们可以释放p->next这块区域的内存,而直接p->next=b->next我们就丢失了。
建表:头插法,尾插法
头插法逻辑位序和物理顺序是不一样的,是刚好相反的。
明确算法
L是头指针,指向头节点。
用对指针的引用,这样才能反馈给实际指针
首先我们应该分配头节点的空间,然后L即头节点的L->next指向NULL
进入一个循环,
首先为s指针分配一块空间,他是我们期望得到的类型的空间。
然后让s->data存储数据,再让s->next=L->next即让s->next指向空,然后让L->next指向s,注意L L->next s s->next都是指针
这其实是插入节点的操作,这样我们就得到了n个节点。形成了一个链表。
尾插法和头插法差不多,但是在算法(函数内)定义了两个指针
r指针和s指针
r指针等于L指向头节点
然后进入循环,首先还是为s指针赋予一片空间,此时这片空间就是节点,然后输入数据域,s->data=a[] 此时的a[i]是数据域,当然数据域也可以是其他任何东西。
然后r现在是头指针(L此时也是头指针)注意指针和内存的关系。
r->next即头节点的next指针,指向s,r->next=s;这是头节点连接到了下一个节点。
然后,r=s;此时r不再指向头节点,但是头节点依然存在,L指向着头节点,头节点没有丢失。
r=s的意义在于r和s此时指向的是同一个节点。
再次循环时,r相当于又一个头节点,s又被重新赋予一片空间(即节点),再次重复这个过程,但是这个过程是顺序的,他的物理位序和逻辑位序是一致的。
最后退出循环时,r->next指向NULL。
数据结构—链表-建立单链表相关推荐
- 数据结构上机-尾、头插法建立单链表-单链表遍历C语言完整代码实现
点击此处跳转视频链接:数据结构上机-尾.头插法建立单链表-单链表遍历C语言完整代码实现
- 数据结构上机实践第四周项目1 - 建立单链表
[项目1 - 建立单链表] 本次项目的目标是定义单链表存储结构,用头插法和尾插法建立单链表,并显示建立好以后的结果. 测试主函数及函数声明源代码如下: //*Copyright (c)2017,烟台大 ...
- 数据结构__头插法建立单链表、尾插法建立单链表
单链表定义.头插法建表.尾插法建表 一.单链表的定义 单链表是线性表的链式存储,是指通过一组任意的存储单元来存储线性表中的数据元素. 单链表结构定义为: 其中data为数据域,用来存放数据:nex ...
- 头插法建立单链表c语言6,2020-07-14(C语言)数据结构采用头插法建立单链表
//采用头插法建立单链表 include include typedef struct LNode { int data; struct LNode *next; } LNode, *LinkList ...
- 数据结构——链表(定义详解及建立单链表与实现其操作)
链表定义:链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成.每个结点包括 ...
- c语言数组指定位置插入和删除_玩转C语言链表,单链表/双向链表的建立/遍历/插入/删除...
最近临近期末的C语言课程设计比平时练习作业一下难了不止一个档次,第一次接触到了C语言的框架开发,了解了View(界面层).Service(业务逻辑层).Persistence(持久化层)的分离和耦合, ...
- python数据结构基础(单链表,多链表,二叉树)
python数据结构基础(单链表,多链表,二叉树) 数据结构指数据对象中数据元素之间的关系 Python 给我们提供了很多现成的数据结构类型,这些系统自己定义好的,不需要我们自己去定义的数据结构叫做 ...
- 2023王道考研数据结构第二章---单链表
2.3 单链表 2.3.1 单链表的定义 什么是单链表? typedef关键字:数据类型重命名 typedef <数据类型> <别名> 如: typedef int zheng ...
- 【数据结构与算法】 01 链表 (单链表、双向链表、循环链表、块状链表、头结点、链表反转与排序、约瑟夫环问题)
一.线性表 1.1 概念与特点 1.2 线性表的存储结构 1.3 常见操作 1.4 应用场景 二.链表 2.1 链表简介 2.2 单向链表(单链表) 2.21 基本概念 2.22 单链表基本操作 2. ...
最新文章
- GC.Collect如何影响垃圾回收
- python 端口扫描
- hdu1196 Lowest Bit
- oracle 索引 效果,Oracle中不使用索引和使用索引的效果比较分析
- 【ArcGIS|空间分析|网络分析】9 使用位置分配选择最佳商店位置
- OBS直播影视使用虚拟声卡
- 数据结构期末考试试题及答案
- ssm企业人事管理系统人事管理系统(企业人事管理系统)企业人事人力资源管理系统
- 世界时钟-国家中英文名称-国家代码-与北京的时差 一览
- Python 汉字转拼音的库--- PyPinyin
- freyja将重新把重心放在orm、sharding、cache上
- Emacs 新闻组 之四 联系人管理
- iPad的屏幕大小是多少?
- 只能用GUEST用户访问共享的解决办法
- java面试考点精讲视频教程!
- 关于GDPR,你需要了解的的5件事
- 19.jvm内存结构部分——堆_内存诊断_jmap
- mysql COMMENT字段注释,表注释使用(转)
- C#使用OleDB操作ACCESS插入数据时提示:参数 @p_Contract 没有默认值
- RK3568-SPI