单链表基本操作的实现——删除
一、 按值删除元素
//删除
void DeleteElem(LinkList &L, ElemType e)
{LinkList p = L;//p指向头结点LinkList q = NULL;while(p->next != NULL){if(p->next->date == e) //从首元结点开始比对{q = p->next;//临时保存被删结点的地址以备释放p->next = p->next->next;//改变删除结点前驱结点的指针域break;}p = p->next;//p指向下一结点}if(q != NULL){delete q;//释放删除结点的空间}}
二、删除第i个元素 (按序号删除元素)
//删除第i个元素
void DeleteIndex(LinkList &L, int i)
{LinkList p = L;LinkList q = NULL;int num = 0;while(p->next != NULL){num++;if( num == i){q = p->next;p->next = p->next->next;break;}p = p->next;}if(q != NULL){delete q;}}
三、删除第i个元素 (按序号删除元素)
算法步骤:
(1)查找结点a(i-1)并由指针p指向该结点。
(2)临时保存待删除结点a(i)的地址在q中,以备释放。
(3)将结点*p的指针域指向a(i)的直接后继结点。
(4)释放结点a(i)的空间。
void ListDelete(LinkList &L,int i)
{//在带头结点的单链表L中,删除第i个元素LinkList p = L;//p指向头结点LinkList q = NULL;int j = 0;while((p->next)&&(j<i-1))//查找第i-1个结点,p指向该结点{p=p->next;++j;}if(!(p->next)||(j>i-1)) //当i>n或n<1时,删除位置不合理{cout<<"ERROR"<<endl;}q=p->next;//临时保存被删除结点的地址以备释放p->next=q->next;//改变删除结点前驱结点的指针域,等价于p->next=p->next->next;delete q;//释放删除结点的空间cout<<"删除成功!"<<endl;
}
int main()
{
//删除元素int e;cout<<"输入需要删除的值:";cin>>e;DeleteElem(L, e);//删除第i个元素
// int i;
// cout<<"输入需要删除元素的序号:";
// cin>>i;// ListDelete(L,i);
// DeleteIndex(L,i);OutputList(L);}
单链表基本操作的实现——删除相关推荐
- 237删除链表中的节点(单链表基本操作)
1.题目描述 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 说明: 链表至少包含两个节点. 链表中所有节点的值都是唯一的. 给定的节点为非末尾节点并且一定 ...
- 7-4 单链表基本操作
7-4 单链表基本操作 请编写程序实现单链表插入.删除结点等基本算法.给定一个单链表和一系列插入.删除结点的操作序列,输出实施上述操作后的链表.单链表数据域值为整数. 输入格式: 输入第1行为1个正整 ...
- C语言单链表基本操作总结
C语言单链表基本操作 本文是参考他人实现的C语言单链表,对多篇博文整理的结果,仅作为学习笔记.文末有参考出处. 1.单链表定义 链表是通过一组任意的存储单元来存储线性表中的数据元素,这些存储单 ...
- 数据结构-单链表基本操作-C语言代码
单链表基本操作 1.头插法建立单链表 2.尾插法建立单链表 3.查找结点 3.修改结点 4.插入结点 5.删除结点 本篇只有c语言代码,具体思路讲解请看这篇博客:数据结构-线性结构-单链表 1.头插法 ...
- 单链表基本操作的实现
单链表基本操作的实现 [PS]: 由于笔者的能力水平有限,如果遇到相关错误或者存在歧义的地方,欢迎在下方评论区留言联系笔者,如果你觉得这篇文章对你有帮助,那么不妨动动你的小手点赞收藏转发,让更多的人看 ...
- 【数据结构-C】单链表基本操作及图解分析
目录 单链表介绍 单链表基本操作及图解分析 1.创建一个新结点 2.头插法向单链表中插入结点 3. 尾插法向单链表中插入结点 4.头删法删除单链表结点 5.尾删法删除单链表结点 6.返回单链 ...
- C 语言单链表基本操作
复习下数据结构,使用 C 语言实现了带头节点的单链表.单链表基本操作有:节点初始化.链表初始化.插入节点.查找节点.删除节点和删除链表等.下面的程序中,list.h 为头文件, 其中包含了上述基本操作 ...
- 单链表的创建、删除、反转、插入、排序操作
单链表的创建.删除.反转.插入.排序操作 文章目录 单链表的创建.删除.反转.插入.排序操作 1.1 链表引言 1.2 单链表节点的数据结构 1.3 创建链表 1.4 打印整个链表 1.5 链表插入数 ...
- 6-8 从单链表LA指定位置删除连续n个元素并插入单链表LB的指定位置 (10 分)
6-8 从单链表LA指定位置删除连续n个元素并插入单链表LB的指定位置 (10 分) 设指针la和lb分别指向两个无头结点单链表中的首元结点,试编写算法,从表la中删除自第i个元素起共len个元素,并 ...
最新文章
- selector与layer-list 单边框效果
- 星期和工作日计算,你会了吗?
- 企业网络推广——网站页面布局优化对于企业网络推广来说非同一般
- element-ui el-radio 回显格式为中文 传值格式为数值
- Address already in use: bind JVM端口被占用解决方法
- 如何恢复MAC苹果电脑系统数据文件恢复详细教程
- Origin模板生成
- linux查看数据区块大小,Linux显示指定区块大小为1048576字节
- 无线电通信之父:马可尼
- 简论H.266与H.265、AV1、H.264对比
- 前端图片上传那些事儿
- wordcloud:利用fontawesome字体绘制图标词云图
- 技术人修炼之道阅读笔记(七)系统性思维方法
- 2021-2027全球与中国玻璃纤维网市场现状及未来发展趋势
- js Number计算精确度
- C#实现帮助文档CHM
- gets(), fgets(), scanf()总结
- 【Turtle表白合集】“海底月是天上月,眼前人是心上人。”余生多喜乐,长平安~(附3款源码)
- abp的application service形成的restful api 和nswagger的集成时, 返回值为null
- python-App自动化测试框架——uiautomator2之元素操作方法(二)
热门文章
- 苹果手机升级13无法开机_苹果手机怎么升级到IOS13系统 IOS13升级教程
- 苹果明日发布第二财季财报 此前预计营收550到590亿美元
- AUTH_USER_MODEL refers to model报错解决
- 王者荣耀s15服务器维护,王者荣耀S15荣耀战令系统更新内容介绍
- 基于Thinkphp开发的独立版本后台主流约拍小程序约拍券约拍发布约拍分享得券约拍平台源码源生前后端源码可以二开适合摄影师或者模特运营的小程序平台
- 第三方软件测试z5x电池,高强度测试vivo Z5x续航,5000mAh+18W双引擎闪充实际表现如何...
- 回调函数中删除对象引发的隐晦非法访问崩溃问题
- 【Skywalking】二、分布式链路跟踪-Skywalking页面介绍
- Unity2018+cardboard 360度全景视频实现
- 【愚公系列】2022年04月 微信小程序-项目篇(祝福语)-01 首页页面设计