单链表插入删除
来源:互联网 发布:c语言是否有指针 编辑:程序博客网 时间:2024/06/04 19:33
在链表的插入删除操作上理解起来比顺序表更为容易,其不需要变动在i位置前的所有的元素,只需要修改节点指针即可。
插入:
设在链表的i位置插入新元素,设i-1节点的指针域为p,设插入的节点指针域为s,所以插入操作应该为:
s->next=p->next;将s的后缀改为p的后缀,p的后缀是原来的第i个点的指针域,将其给s的后缀说明此时的s是第i个节点的前一个节点。
p->next=s;;将p的后缀改为s。
第一条语句是将s插在第i个之前,第二条语句将s放在第i-1个之后,因此完成了链表的插入。(s->data=e)
删除:
设在第i个节点前删除节点,设p为被删除位置的前驱节点,q为被删除位置的节点。因此插入操作为:
q=p->next;将q改为p的后缀节点,说明q即为要删除的位置。
p->next=q->next;将p的后缀改为q的后缀,说明此时并没有q这个节点了。
e=q->data;free(q);
第一句是申明删除节点在p之后保证位置,第二句是删除语句。
并不是很难理解,主要是弄清它们的前驱后缀关系,另外要删除或插入首先要解决位置在哪的问题。
另外在这里再写上如何来寻找这样的第i个位置:
while(p&&j<i-1)
{
p=p->next;
++j;
}
if(!p || j!=i-1)
return ERROR;
此时的p即为删除点的前驱了。
0 0
- 单链表的插入删除
- 单链表创建,插入,删除
- 单链表的插入删除
- 单链表初始化、插入、删除
- 单链表创建,插入,删除
- 单链表的插入删除
- 单链表插入删除
- 单链表插入删除排序
- 单链表-建立插入删除
- 单链表建立 插入 删除
- 单链表的插入、删除
- 单链表中的插入与删除
- 单链表插入与删除算法
- 单链表的插入和删除
- 单链表的插入与删除
- 单链表的插入与删除
- 单链表的建立、插入、删除
- 单链表的插入和删除
- Android——加载中的dialog
- CentOS7安装PostgreSQL9.5过程
- Android开发笔记(八十六)几个特殊的类
- EasyUI tree 相关
- Mac 升级 OpenSSL 安装 Tengine
- 单链表插入删除
- 关于java字符串的内存问题
- 杂记
- recycleView的理解(UNDone)
- 状态栏通知Notification、NotificationManager详解
- 将 PROTOCOL 的方法声明为 MUTATING
- gflags学习
- 南京理工大学第八届程序设计大赛(校外镜像) H 谁才是最强战舰!
- python爬虫和正则表达式