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

int getCur(StaticLinkList tan)
{int i = tan[0].cur;if(tan[0].cur)tan[0].cur = tan[i].cur;return i;
}

要想更好的理解,最好结合一个静态列表的实例来掌握,下面给出一静态列表

每当进行插入时,便可以从备用链表上取得第一结点下作为待插入的新结点,下面给出在静态链表中第i个元素之前插入新的数据e的代码。

int ListInsert(StaticLinkList tan,int i,ElemType e)//静态链表中第i个元素之前插入新的数据e
{int l,j,k;k = MAXSIZE -1;//数组最后一个元素的下标if(i < 1|| i > ListLength(L)+ 1)//ListLength为计算链表长度的函数return error;j = getCur(tan);if(j){tan[j].data = e;for(l = 1;l <= i - 1;l++){k = tan[k].cur;}tan[j].cur = tan[k].cur;tan[k].cur = j;return bingo;}return  error;
}

二、静态链表的删除操作

为了很好的表示静态链表的删除操作,下面给出一静态链表的实例。

假设删除静态链表中下标为2的元素,即为链表中第3个元素

void recycleNode(StaticLinkList tan,int i)//将下标为k的空闲结点回收到备用链表
{tan[i].cur = tan[0].cur ;tan[0].cur  = i;
}
int ListDelete(StaticLinkList tan,int i)//删除链表中第i个数据元素
{int j,k;if(i < 1 || i > ListLength(L))return error;k = MAXSIZE - 1;for(j = 1;j <= i -1;j++){k = tan[k].cur;//得到删除元素前一个元素的下标}j = tan[k].cur;//将要删除元素的下标tan[k].cur = tan[j].cur;recycleNode(tan,j);return bingo;
}

总结下静态链表的优缺点:
优点:在插入和删除操作时,只需要修改游标,不需要移动元素,从而改进了在顺序存储结构中的插入和删除操作需要大量移动元素的缺点。
缺点:1)失去了顺序存储结构随机存取的特性。2)没有解决连续存储分配(数组)带来的表长难以确定的问题。

静态链表的插入和删除相关推荐

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

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

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

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

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

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

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

    一.求带有头结点的单链表长度 算法思路:沿带头节点单链表L的首元结点计数统计单链表长度 算法描述: 顺链头开始,计数器j初值为0:当前指针p指向链表L的首元结点 p=L->next p依次往后( ...

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

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

  6. 链表的插入、删除、排序的程序

    #include<stdio.h> #include<malloc.h> #include<stdlib.h> typedef struct node {int d ...

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

  8. 需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 。 A 单链表 B 静态链表 C 线性链表 D 顺序存储结构

    1.需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 . A 单链表 B 静态链表 C 线性链表 D 顺序存储结构 答案:B 2.静态链表中指针表示的是() A 内存地址 B下一元素地 ...

  9. 【数据结构】线性表的链式表示-循环单链表、循环双链表、静态链表

    循环单链表 从任何一个结点出发都能访问到链表的每一个元素 判空条件不是头节点的后继指针是否为空,而是它是否等于头指针 有时对单链表常做的操作实在表头和表尾进行的,此时可对循环单链表不设头指针而仅设尾指 ...

最新文章

  1. python pytest和allure环境_【转载】Python—Pytest+Allure定制报告
  2. 【Python】Pandas数据排序实现
  3. Qt Creator在3D编辑器中工作
  4. SQLite的基本使用一
  5. numpy random 模块
  6. Java中的Instanceof
  7. iOS导航控制器和Segues
  8. 2021年复盘总结发现了C站博主缺少的赚钱之路
  9. STM32CubeMX配置读取MLX90614(GY-906)非接触红外测温传感器
  10. 英文歌曲推荐(lady gaga\Taylor swift\Adele等)
  11. win2003企业版sp2序列号
  12. 机器人操作臂运动学入门一--D-H参数标定
  13. Apereo CAS 5.0.3.1安装配置
  14. 怎样提高电脑开机速度
  15. Java~设计模式之观察者模式 || 班长大喊老师来啦
  16. 八皇后-n皇后-2n皇后
  17. 浅层砂过滤器的工作原理
  18. 简单的登陆注册的实现+验证码和表单验证
  19. 常用的四种CSS样式表格
  20. Input和label

热门文章

  1. JS 事件冒泡和事件捕获
  2. Unknown column 'subject_1.pid' in 'field list') [SQL: 'SELECT anon_1.screen_id AS anon_1_screen_i
  3. kmeans算法原理以及实践操作
  4. 青龙羊毛——杀猪盘(搬砖,非原创)
  5. java mail smtps,使用javamail发SMTPS邮件,javamailsmtps邮件,Java通常情况下都不会
  6. ftp服务器 文件目录,如何列出ftp服务器上的目录中的文件?
  7. linux的rt补丁安装,微软发布补丁封杀允许Surface RT安装Linux的“漏洞”
  8. win8更改计算机账户密码忘记了怎么办,密码忘记怎么办?WIN8平板电脑如何重置密码?...
  9. php图片上传怎么跨域,ajax跨域上传图片(后端php)完整例子
  10. 我使用过的Linux命令之trap - 在脚本中处理信号