数据结构之线性表

数据结构之线性表

一. 线性表的基本操作

1. 概念

定义:零个或多个数据元素的有限序列称为线性表(List)

image-20221019200524514

a1是表头元素,an是表尾元素。

除a1外,每个元素有且仅有一个直接前驱;除最后一个元素外,每个元素有且仅有一个直接后继

注意:位序从1开始,而数组从0开始。

分类:image-20221019195740488

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. 定义

image-20221019202534101

①带头结点

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

②不带头结点

2. 基本操作的实现

3. 循环链表

1. 定义

2. 基本操作的实现

4. 静态链表

1. 定义

2. 基本操作的实现

posted @   无知呦  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
点击右上角即可分享
微信分享提示