一、求带有头结点的单链表长度

算法思路:沿带头节点单链表L的首元结点计数统计单链表长度

算法描述:

  1. 顺链头开始,计数器j初值为0;当前指针p指向链表L的首元结点 p=L—>next
  2. p依次往后(计数j++)直到表尾(p=NULL)

二、建立空表

InitList(LinkList *L)/*建立空表*/

L=(LinkList)malloc(sizeof(Node));/*建立头结点*/

L->next=NULL;/*建立空的单链表*/

(一)、头插法建表

算法描述:

已知空链表L,依次读入结点数据头插入,直到读入结束标志为止。

每插入一个结点到表头的步骤:

  1. 生成新结点s
  2. 将结点s插入到首元结点之前,即表头结点之后;

(二)、尾插法建表

算法描述:已知空链表L,设置尾指针r指向当前表尾

依次读入结点数据尾插入,直到读入结束标志时将表尾结点链域置空

每插入一个结点到表尾的步骤:

  1. 生成新结点s
  2. 将结点s插入到表尾r结点之后,该结点作为当前表尾结点;

三、单链表的查找

(一)、按序号查找

算法描述:

  1. 从头查找 当前指针p指向表头L;
  2. 顺链计数 表未查完且未找到,则计数器j加1,p指针后移;
  3. 结果判断 如找到第i个结点,则返回结点p;如表查完未找到,则返回空。

(二)、按值查找

算法描述:

  1. 从表头开始,p指向链表L首元结点 p=L->next;
  2. 当表未查完时,若当前结点值不为key,则指针p后移;比较当前结点值为key,则跳出循环
  3. 结束返回p指针的位置

四、单链表的插入

算法描述:

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)

单链表的插入和删除_从0开始的编程之梦——数据结构之单链表的基本运算相关推荐

  1. c语言数组指定位置插入和删除_玩转C语言链表,单链表/双向链表的建立/遍历/插入/删除...

    最近临近期末的C语言课程设计比平时练习作业一下难了不止一个档次,第一次接触到了C语言的框架开发,了解了View(界面层).Service(业务逻辑层).Persistence(持久化层)的分离和耦合, ...

  2. 线性表基本操作,单链表的建立(头插法,尾插法)、插入、删除、遍历操作的实现(c++ 数据结构 实验二)

    大学数据结构课程的实验题目,掌握线性表的链接存储结构,用c++语言描述 一.实验要求 1.分别用头插法和尾插法建立一个含有若干结点的单链表 2.对已建立的单链表进行插入.删除.遍历输出等操作 二.代码 ...

  3. c语言链表的插入 查询 删除

    c语言实验十五链表 链表的插入 查询 删除, 不会吧,来看看月腾兄的: #include<stdio.h> #include<stdlib.h> struct node {in ...

  4. java数据结构20:Big Bang(链表的插入、删除、遍历和查找)

    20:Big Bang(链表的插入.删除.遍历和查找) 总时间限制: 20000ms 内存限制: 131072kB 描述 学习累了的时候看看一集二十分钟左右的<生活大爆炸>也不失为一种乐趣 ...

  5. 插入、删除、修改指向下一节点和下下一节点链表

    插入.删除.修改指向下一节点和下下一节点链表 操作一个链表,链表中的节点有两个指针,一个指向下一个节点, 一个指向下下一个节点,如果下一个节点或者下下一个节点为空,则为null. 操作为插入,删除,修 ...

  6. 线性表的链式存储结构以及单链表的插入和删除原理实现

    线性表的链式存储结构 线性表中的每个元素最多只有一个前驱元素和一个后继元素(其逻辑结构),因此可以采用链式存储结构存储. 链表 线性表的链式存储结构称为链表.在链表中每个结点不仅包含有元素本身的信息( ...

  7. 数据结构Java实现03----单向链表的插入和删除b

    文本主要内容: 链表结构 单链表代码实现 单链表的效率分析 一.链表结构: (物理存储结构上不连续,逻辑上连续:大小不固定)            概念: 链式存储结构是基于指针实现的.我们把一个数据 ...

  8. 静态链表的插入和删除

    静态链表相当于是用一个数组来实现线性表的链式存储结构,在静态链表中操作的是数组. 结构体数组 一.静态链表的插入操作 静态链表的插入操作包含两部分,首先是获得空闲量的下标,程序代码如下; int ge ...

  9. 【数据结构与算法】单链表的插入和删除

最新文章

  1. 主流机器学习[xgb, lgb, Keras, LR]
  2. C语言如何产生随机数
  3. ldap的shema
  4. LoadRunner本机录制http协议程序遇到的问题以及解决方法
  5. 南北非遗传承人齐聚北京 演绎非遗精巧
  6. Teamcenter2007 安装步骤
  7. 百度编辑器ueditor字体添加
  8. 51nod1001数组中和等于K的数对
  9. bootstrap table用法
  10. oracle怎么关联表查询语句,Oracle数据库的多表关联查询SQL语句
  11. win10计算机管理界面模糊,Win10电脑屏幕显示模糊
  12. Word 公式排版(使用制表符)
  13. 如何理解移动数据和移动计算
  14. Invalid bound statement (not found): shopping_whith_payment.pay.dataobject.PayInfoMapper.insertSelec
  15. ng-model、ng-bind、ng-value使用区别
  16. os I/O设备和设备控制器
  17. Kattis Problem-Unique Snowflakes
  18. Python运维开发(CMDB资产管理系统)——环境部署(下)
  19. 流行的蓝光影片播放器推荐
  20. 熊掌号必备SEO知识4:已开通熊掌号,站点换域名了怎么办?

热门文章

  1. Visual C++ 控制栏
  2. WPF命中测试示例(二)——几何区域命中测试
  3. 28天打造专业红客(一)
  4. 基于Springboot实现茶叶商城系统
  5. 参考基因组中的特殊序列
  6. 汇总500个excel
  7. Visual Studio中将打开的代码与类文件进行关联
  8. JQuery 选择器。
  9. 2019春季学期期末总结
  10. rocketmq sql解析过滤