单链表的插入和删除_从0开始的编程之梦——数据结构之单链表的基本运算
一、求带有头结点的单链表长度
算法思路:沿带头节点单链表L的首元结点计数统计单链表长度
算法描述:
- 顺链头开始,计数器j初值为0;当前指针p指向链表L的首元结点 p=L—>next
- p依次往后(计数j++)直到表尾(p=NULL)
![](/assets/blank.gif)
二、建立空表
InitList(LinkList *L)/*建立空表*/
{
L=(LinkList)malloc(sizeof(Node));/*建立头结点*/
L->next=NULL;/*建立空的单链表*/
}
(一)、头插法建表
算法描述:
已知空链表L,依次读入结点数据头插入,直到读入结束标志为止。
每插入一个结点到表头的步骤:
- 生成新结点s
- 将结点s插入到首元结点之前,即表头结点之后;
![](/assets/blank.gif)
(二)、尾插法建表
算法描述:已知空链表L,设置尾指针r指向当前表尾
依次读入结点数据尾插入,直到读入结束标志时将表尾结点链域置空
每插入一个结点到表尾的步骤:
- 生成新结点s
- 将结点s插入到表尾r结点之后,该结点作为当前表尾结点;
![](/assets/blank.gif)
三、单链表的查找
(一)、按序号查找
算法描述:
- 从头查找 当前指针p指向表头L;
- 顺链计数 表未查完且未找到,则计数器j加1,p指针后移;
- 结果判断 如找到第i个结点,则返回结点p;如表查完未找到,则返回空。
![](/assets/blank.gif)
(二)、按值查找
算法描述:
- 从表头开始,p指向链表L首元结点 p=L->next;
- 当表未查完时,若当前结点值不为key,则指针p后移;比较当前结点值为key,则跳出循环
- 结束返回p指针的位置
![](/assets/blank.gif)
四、单链表的插入
算法描述:
1.确定第i-1个结点的位置(可用按序号查找)
2.申请新结点
3.插入挂链:新结点s插至第i-1个结点之后;
S结点的后继指向第i个结点 S->next=pre->next
第i-1个结点的指针指向s pre->next=s
五、单链表的删除
算法描述:
1.确定第i-1个结点的位置p(同按序号查找算法)
2.删除并释放第i个结点
指针r指向被删结点 r=p->next
删除第i个结点r p->next=r->next
释放r结点 free(r)
![](/assets/blank.gif)
单链表的插入和删除_从0开始的编程之梦——数据结构之单链表的基本运算相关推荐
- c语言数组指定位置插入和删除_玩转C语言链表,单链表/双向链表的建立/遍历/插入/删除...
最近临近期末的C语言课程设计比平时练习作业一下难了不止一个档次,第一次接触到了C语言的框架开发,了解了View(界面层).Service(业务逻辑层).Persistence(持久化层)的分离和耦合, ...
- 线性表基本操作,单链表的建立(头插法,尾插法)、插入、删除、遍历操作的实现(c++ 数据结构 实验二)
大学数据结构课程的实验题目,掌握线性表的链接存储结构,用c++语言描述 一.实验要求 1.分别用头插法和尾插法建立一个含有若干结点的单链表 2.对已建立的单链表进行插入.删除.遍历输出等操作 二.代码 ...
- c语言链表的插入 查询 删除
c语言实验十五链表 链表的插入 查询 删除, 不会吧,来看看月腾兄的: #include<stdio.h> #include<stdlib.h> struct node {in ...
- java数据结构20:Big Bang(链表的插入、删除、遍历和查找)
20:Big Bang(链表的插入.删除.遍历和查找) 总时间限制: 20000ms 内存限制: 131072kB 描述 学习累了的时候看看一集二十分钟左右的<生活大爆炸>也不失为一种乐趣 ...
- 插入、删除、修改指向下一节点和下下一节点链表
插入.删除.修改指向下一节点和下下一节点链表 操作一个链表,链表中的节点有两个指针,一个指向下一个节点, 一个指向下下一个节点,如果下一个节点或者下下一个节点为空,则为null. 操作为插入,删除,修 ...
- 线性表的链式存储结构以及单链表的插入和删除原理实现
线性表的链式存储结构 线性表中的每个元素最多只有一个前驱元素和一个后继元素(其逻辑结构),因此可以采用链式存储结构存储. 链表 线性表的链式存储结构称为链表.在链表中每个结点不仅包含有元素本身的信息( ...
- 数据结构Java实现03----单向链表的插入和删除b
文本主要内容: 链表结构 单链表代码实现 单链表的效率分析 一.链表结构: (物理存储结构上不连续,逻辑上连续:大小不固定) 概念: 链式存储结构是基于指针实现的.我们把一个数据 ...
- 静态链表的插入和删除
静态链表相当于是用一个数组来实现线性表的链式存储结构,在静态链表中操作的是数组. 结构体数组 一.静态链表的插入操作 静态链表的插入操作包含两部分,首先是获得空闲量的下标,程序代码如下; int ge ...
- 【数据结构与算法】单链表的插入和删除
最新文章
- 主流机器学习[xgb, lgb, Keras, LR]
- C语言如何产生随机数
- ldap的shema
- LoadRunner本机录制http协议程序遇到的问题以及解决方法
- 南北非遗传承人齐聚北京 演绎非遗精巧
- Teamcenter2007 安装步骤
- 百度编辑器ueditor字体添加
- 51nod1001数组中和等于K的数对
- bootstrap table用法
- oracle怎么关联表查询语句,Oracle数据库的多表关联查询SQL语句
- win10计算机管理界面模糊,Win10电脑屏幕显示模糊
- Word 公式排版(使用制表符)
- 如何理解移动数据和移动计算
- Invalid bound statement (not found): shopping_whith_payment.pay.dataobject.PayInfoMapper.insertSelec
- ng-model、ng-bind、ng-value使用区别
- os I/O设备和设备控制器
- Kattis Problem-Unique Snowflakes
- Python运维开发(CMDB资产管理系统)——环境部署(下)
- 流行的蓝光影片播放器推荐
- 熊掌号必备SEO知识4:已开通熊掌号,站点换域名了怎么办?