05静态链表(补充)

news/2024/11/20 6:24:58/

静态链表

定义

  • 单链表:各个结点散落在内存中的各个角落,每个结点有指向下一个节点的指针(下一个结点在内存中的地址);
  • 静态链表:用数组的方式来描述线性表的链式存储结构: 分配一整片连续的内存空间,各个结点集中安置,包括了——数据元素and下一个结点的数组下标(游标)
    • 其中数组下标为0的结点充当"头结点"
    • 游标为-1表示已经到达表尾
    • 若每个数据元素为4B,每个游标为4B,则每个结点共8B;假设起始地址为addr,则数据下标为2的存放地址为:addr+8*2
    • 注意: 数组下标——物理顺序,位序——逻辑顺序;
    • 优点:增、删操作不需要大量移动元素;
    • 缺点:不能随机存取,只能从头结点开始依次往后查找,容量固定不变
#include<stdio.h>
#include<stdlib.h>#define MaxSize 10struct Node {      //静态链表结构类型的定义int data;     //存储数据元素int next;	   //下一个元素的数组下表(游标)	
};//用数组定义多个连续存储的结点
void textSLinkList()
{struct Node a[MaxSize]; //数组a作为静态链表,每一个数据元素的类型都是struct Node//.....
}

同:

#define MaxSize 10        //静态链表的最大长度typedef struct{           //静态链表结构类型的定义ELemType data;        //存储数据元素int next;             //下一个元素的数组下标
}SLinkList[MaxSize];void testSLinkList(){SLinkList a;
}
#define MaxSize 10        //静态链表的最大长度struct Node{              //静态链表结构类型的定义ElemType data;        //存储数据元素int next;             //下一个元素的数组下标(游标)
};typedef struct Node SLinkList[MaxSize]; //重命名struct Node,用SLinkList定义“一个长度为MaxSize的Node型数组;

注意:SLinkList a 强调a是静态链表;struct Node a 强调a是一个Node型数组;

静态链表的基本操作实现

  • 初始化静态链表:把a[0]的next设为-1
  • 查找某个位序(不是数组下标,位序是各个结点在逻辑上的顺序)的结点:从头结点出发挨个往后遍历结点,时间复杂度O=(n)
  • 在位序为i上插入结点:① 找到一个空的结点,存入数据元素;② 从头结点出发找到位序为i-1的结点;③修改新结点的next;④ 修改i-1号结点的next;
  • 删除某个结点:① 从头结点出发找到前驱结点;② 修改前驱节点的游标;③ 被删除节点next设为-2;

http://www.ppmy.cn/news/471055.html

相关文章

什么牌子蓝牙耳机运动好?健身推荐这几款高续航真无线蓝牙耳机

蓝牙耳机在过去十年中取得了长足的进步&#xff0c;它的发展意味着更先进的蓝牙编解码器、更强大的续航和更好的音质&#xff0c;对于那些重视音质和便利性的人来说是个好消息&#xff0c;蓝牙耳机在任何场合都会给人很大的帮助&#xff0c;而蓝牙耳机的好坏也要从几个方面来评…

软件工程是否迎来iPhone时刻?

“软件工程是否迎来iPhone时刻&#xff1f;” 是2023K全球软件研发行业创新峰会上海站主会场的Panel discussion的主题&#xff0c;出场的几位嘉宾给出了不同的答案&#xff0c;其中有两位嘉宾给出了“No”&#xff0c;一位给出了“塞班时刻”&#xff08;后来给我朋友圈投票是…

【UE 从零开始制作坦克】9-坦克瞄准

效果 步骤 1. 将下载的图片资源导入 2. 再新建一个控件蓝图&#xff0c;命名为“WBP_Aim” 打开“WBP_Aim”&#xff0c;拖入图像控件 选择图像控件的锚点如下 偏移全部置0 图像选择刚导入的“miaozhunjing” 3. 打开骨骼“SKEL_West_Tank_M1A1Abrams” 可以看到在炮管上有一个…

基于ChatGPT打造一个智能数据分析系统

最近最火的AI话题无疑就是ChatGPT了&#xff0c;让大家看到了通用智能领域的巨大进步&#xff0c;ChatGPT已经能足够好的回答人们提出的各种问题&#xff0c;因此我也在想能否利用ChatGPT来理解用户对于数据分析方面的提问&#xff0c;把这些提问转化为相应的数据分析任务&…

房屋装修选择自装,如何寻找水电工人,比价并施工(水电阶段)

环境&#xff1a; 地点&#xff1a;杭州 装修类型&#xff1a;自装 面积&#xff1a;建面135平方 进度&#xff1a;水电阶段 问题描述&#xff1a; 房屋装修选择自装&#xff0c;如何寻找水电工人&#xff0c;比价并施工 解决方案&#xff1a; 一、了解水电相关知识 水…

调用万维易源API实现天气预测

目录 1. 作者介绍2. 关于理论方面的知识介绍2.1 天气预测简介2.2 预测方法 3. 代码实现3.1 需要安装的包3.2 部分代码3.3 实验结果 1. 作者介绍 房庚晨&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;22级研究生 研究方向&#xff1a;机器视觉与人工智能 电子…

【干货】无人机如何进行倾斜摄影的航线规划

掌握天气情况 无人机航测作业前&#xff0c;要掌握当前天气状况&#xff0c;并观察云层厚度、光照强度和空气能见度。 正中午地面阴影最小&#xff0c;在日出到上午9点左右&#xff0c;下午3点左右到日落的两个时间段中&#xff0c;光照强度较弱且太阳高度角偏大&#xff0c;…

从零开始 Spring Boot 44:Test

从零开始 Spring Boot 44&#xff1a;Test 图源&#xff1a;简书 (jianshu.com) 本篇文章我们讨论如何在 Spring 项目中编写测试用例。 当前使用的是 Spring 6.0&#xff0c;默认集成 JUnit 5。 依赖 Spring Boot 的测试功能需要以下依赖&#xff1a; <dependency><…