单链表中的插入操作:

Status ListInsert(LinkList &L,int i,Elemtype e){cout<<"在第"<<i<<"个位置插入元素"<<e<<"后:"<<endl;//查找操作 LinkList p=L; int j=0;//j指的是当前p指向的是第几个结点while( p && (j<i-1) ){p=p->next;   ++j;//查找第i-1个结点,p指向该结点 } if(!p||j>i-1)return ERROR;//插入操作 LinkList s=new LNode;//生成新结点s->data=e;//将结点*s的数据域置为es->next=p->next;//将结点*s的指针域指向p指针域原来指向的元素 p->next=s;//将结点*p的指针域指向结点*sreturn OK;
}

单链表的删除操作:

Status ListDelete(LinkList &L,int i){cout<<"删除第"<<i<<"个元素后:"<<endl;//查找操作 LinkList p=L; int j=0;//j指的是当前p指向的是第几个结点while( (p->next) && (j<i-1) ){p=p->next; ++j;}if( !(p->next) || (j>i-1) )return ERROR;//赋值操作 LinkList q=p->next;//临时保存被删除结点的地址到指针q里以备释放p->next=q->next;//改变删除结点 前面结点的指针域(跳过删除的结点直接指向下一个) delete q;//释放删除结点的空间 return OK;
} 

我们注意这里两者循环条件不同:

插入:从头结点开始(n+1个)

while( p && (j<i-1) )

删除:从首元结点开始(n个)

while( (p->next) && (j<i-1) )

  插入算法中的循环条件( p && (j<i-1) )与删除算法中的循环条件( (p->next) && (j<i-1) )是有所不同的。因为插入操作中合法的插入位置有n+1个,而删除操作中合法位置只有n个,如果使用与插入操作相同的循环条件,则会出现引用空指针的情况,使删除操作失败。

 代码实现:

单链表 插入操作 和 删除操作 的易错点相关推荐

  1. 单链表的创建、删除、反转、插入、排序操作

    单链表的创建.删除.反转.插入.排序操作 文章目录 单链表的创建.删除.反转.插入.排序操作 1.1 链表引言 1.2 单链表节点的数据结构 1.3 创建链表 1.4 打印整个链表 1.5 链表插入数 ...

  2. 数据结构与算法-单向链表的修改和删除操作

    单向链表的修改和删除操作 单向链表的修改 单向链表的删除 单向链表的修改 在上面的代码基础上定义几个英雄 HeroNode hero1 = new HeroNode(1,"宋江", ...

  3. 6-8 从单链表LA指定位置删除连续n个元素并插入单链表LB的指定位置 (10 分)

    6-8 从单链表LA指定位置删除连续n个元素并插入单链表LB的指定位置 (10 分) 设指针la和lb分别指向两个无头结点单链表中的首元结点,试编写算法,从表la中删除自第i个元素起共len个元素,并 ...

  4. [数据结构]顺序单链表插入

    一,单链表插入操作 [cpp] view plaincopy typedef struct NODE { struct NODE *link; int value; }Node; #include & ...

  5. 单链表基本操作的实现——删除

    一. 按值删除元素 //删除 void DeleteElem(LinkList &L, ElemType e) {LinkList p = L;//p指向头结点LinkList q = NUL ...

  6. c语言随机生成字母链表,C语言 尾插法建立单链表 插入26个英文字母

    C语言 尾插法建立单链表 插入26个英文字母0 uosnmzer2016.09.13浏览131次分享举报 #include #include #include /* run this program ...

  7. 单链表插入、删除操作单步解析(十三)

    1.单链表定义 每个结点包含数据域和指针域,指针域存储下一个结点的地址.  2.插入操作 在第i个结点前面,插入一个e结点. 分析: <1>.s->next = p->next ...

  8. 数据结构单链表插入和删除操作

    单链表:先回顾单链表的特点  逻辑相邻 物理上不一定相连 首先初始化单链表,其中主要保存的是该节点自身的值以及下个节点的地址. 有效节点结构体设计: ​ struct Node{ ​ int data ...

  9. 单链表插入、删除和查找操作

    一.链表的定义: 链表是一种物理存储结构上非连续存储结构. 二.节点的表示: 节点(Node)==>数据+补充信息 三.单链表的插入: 1.头插法 2.尾插法 3.任意位置插入 class No ...

最新文章

  1. 24点c语言程序,C语言解24点游戏程序
  2. 如何入门Python?你不知道的小窍门。
  3. Shell---for循环
  4. matlab中imresize函数的用法,为何 MATLAB imresize 函数和 OpenCV resize 函数结果不同
  5. verilog 浮点转定点_定点数优化:性能成倍提升
  6. Give Candies【快速幂+欧拉】
  7. maven引用公共包_使用github作为maven仓库存放发布自己的jar包依赖 实现多个项目公共部分代码的集中,避免团队中多个项目之间代码的复制粘贴...
  8. 【 批量爬取下载geo.datav.aliyun.com下地图的json文 】
  9. 欢庆博客达到V5级别,感恩所有程序员
  10. 按顺序发起多次请求的loading使用
  11. Correlation coefficients and appliction in fMRI Data
  12. lol新加坡服务器中英文文件,lol手游新加坡服中文补丁
  13. luogu P3332 [ZJOI2013]K大数查询
  14. php启用 兼容性视图,新版Edge浏览器兼容性视图设置及添加兼容性站点教程(图示)...
  15. loadrunner server压力测试 sql_LoadRunner压力测试实例 - 随风而逝 - 博客园
  16. Win32gui 无效窗口句柄
  17. lmdb.Error: 路径 : ϵͳ�Ҳ���ָ����·����解决办法
  18. cobalt strike profile
  19. opensatck 分布式路由模式DVR部署
  20. 微信视频号直播数据哪里可以看?

热门文章

  1. 到底死不死我就请了七天假_“我就请了7天假,你到底死不死啊?”
  2. 业务系统里的Office文档如何在线编辑
  3. 简单的javascript学习01
  4. iOS客户端公共WIFI解决方案
  5. 黄河秦晋峡谷流凌大量封堵 冰凌覆盖壶口瀑布
  6. 南阳理工学院计算机专业很强吗,南阳理工学院最好的专业?实力最强的是那个专业...
  7. C++ 引用以及引用与指针的区别
  8. PhoneGap介绍
  9. samba,nfs,iscsi网络文件系统
  10. 【存储】 iSCSI Target(tgt) |什么是iSCSI target|SCSI协议