数据结构之线性表01(顺序表、单链表、静态链表 基础)

本文介绍了数据结构中的线性表,包括线性表的一对一元素关系,顺序存储和链式存储两种结构。顺序存储利用连续地址存储元素,而链式存储则允许元素存储在不连续的单元。文章还详细讨论了线性表的插入和删除操作,分别针对顺序存储、单链表及静态链表进行了说明。
摘要由CSDN通过智能技术生成

线性表是数据结构的一种,线性表中数据元素之间的关系是一对一的关系。除了第一个元素和最后一个元素之外,每一个元素有且只有一个前驱和一个后继,第一个元素没有前驱,最后一个元素没有后继。

线性表可以分为顺序存储和链式存储

  • 顺序存储:顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,称为线性表的顺序存储结构或顺序映像。
  • 链式存储:用一组任意的存储单元存储线性表中的数据元素,称为线性表的链式存储结构。它的存储单元可以是连续的,也可以是不连续的。

线性表的基本操作

	InitList(*L): //初始化操作,建立一个空的线性表L。
	ListEmpty(L)://判断线性表是否为空表,若线性表为空,则返回ture,否则返回false。
	ClearList(*L)://清空线性表。
	GetElem(L,i,*e)://将线性表的第i个元素值返回给e。
	LocateElem(L,e)://在线性表L中查找与给定值e相关的元素,如果查找成功,返回该元素表中序号表示成功;否则,返回0表示失败。
	ListInsert(*L,i,e)://在线性表L中第i个元素位置插入新元素e。
	ListDelete(*L,i,*e)://删除线性表L中第i个位置元素,并用e返回其值。
	//数组data[]:线性表存储空间的存储位置

线性表的存储结构

获取线性表L的长度

//静态链表中使用
#define Max 500 //定义数组的长度

int ListLength(StaticLinkList L )
{
   
	int j = 0;
	int i = L[MAX-1].cur; // cur指游标
	
	while(i)
	{
   
		i = L[i].cor;
		j++;
	}
	return j;
}

  • 顺序存储结构
#define OK 1
#define TRUE 1
#define ERROR 0
#define FALSE 0

typedef int status1;  //status 表示状态  Status i;类似于 int i;
//顺序存储初始化
status1 GetElem(SqList L, int i, ElemType *e)
{
   
	if( L.length==0 || i<1 || i>L.length )  //线性表为空 或 i不存在
	{
   
		return ERROR;
	}
	*e = L.data[i - 1];  //将线性表L的第i个元素赋值给e
	
	return OK;
} 
  • 链式存储结构
#define OK 1
#define TRUE 1
#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值