数据结构之线性表
数据结构之线性表
一. 线性表的基本操作
1. 概念
定义:零个或多个数据元素的有限序列称为线性表(List)
a1是表头元素,an是表尾元素。
除a1外,每个元素有且仅有一个直接前驱;除最后一个元素外,每个元素有且仅有一个直接后继。
注意:位序从1开始,而数组从0开始。
分类:
2. 操作
InitList(&L):初始化线性表并分配内存空间
DestroyList(&L):销毁并释放空间
ListInsert(&L,i,e):第i个位置插入元素e
ListDelete(&L,i,&e):删除第i个位置的元素 并用e返回
LocateElem(L,e):在L中查找e
GetElem(L,i):查找第i个位置的元素的值
Length(L):返回L的表长
PrintList(L):按前后顺序输出L的所有元素值
Empty(L):若空返回true 否则false
tip:什么时候要传入参数的引用”&“——对参数的修改结果需要带回来
二. 线性表的顺序存储
1. 顺序表
定义:用一组地址连续的存储单元依次存储线性表的数据元素,这种存储结构的线性表称为顺序表。
特点:逻辑上相邻的数据元素,物理次序也是相邻的,故常用数组表示。
三. 线性表的链式存储
1. 单链表
1. 定义
2. 基本操作的实现
2. 双链表
1. 定义
①带头结点
struct LNode{
ElemType data;
struct LNode *next; //指针指向下一节点
}
typedef struct LNode LNode;//将struct LNode命名为LNode
typedef struct LNode*LinkList;//LinkList为指向struct LNode 的指针
//等价于
typedef struc LNode{
ElemType data;
struct LNode *next; //指针指向下一节点
}LNode,*LinkList;
//开始初始化单链表
bool InitList(LinkList &L){
L=(LNode *)malloc( sizeof(LNode) );
if(L=NULL)
return false;
L->next=NULL;
return true;
}
//注意:LNode * 等价于 LinkList
②不带头结点
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)