数据结构-线性表的顺序存储结构

顺序表(Sequence List)

顺序存储定义:逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。

任一元素均可随机存取

复制代码
#define MAXSIZE 100
typedef struct
{
	ElemType *elem;//elem指向空间的基地址
	int length;//当前长度
}SqList;//顺序表的结构类型为SqList
SqList L;//定义一个线性表变量

Status InitList(SqList &L)
{
	//L.elem=(ElemType*)malloc(sizeof(ElemType)*MaxSize);//内存动态分配
	L.elem=new ElemType[MAXSIZE];//此为C++的动态分配存储,释放时  delete 指针
	if(!L.elem) 
		exit(OVERFLOW);//存储分配失败退出
	L.length=0;
	return OK;
}

malloc(m)函数:开辟m字节长度的地址空间,并返回这段空间的首地址

sizeof(x)运算:计算变量x的长度

free(p)函数:释放指针p所指变量p所指变量的存储空间,即彻底删除一个变量

(ElemType*):强制类型转换为ElemType的指针

需要加载头文件 : <stdio.h>

逻辑位序和物理位序相差1,例如逻辑上第1个元素存储在下标为0的位置上

复制代码
Status GetElem(SqList L,int i,ElemType &e)
{
	if(i<1||i>L.Length)
		return error;
	e=L.elem[i-1];
	return OK;
}

Status LocateElem(SqList L,ElemType e)
{
	for(i=0;i<L.Length;i++)
	{
		if(L.elem[i]==e)
		{
			return i+1;
		}else{
			return 0;
		}
	}
}

平均查找长度ASL(Average Search Length)/期望值

对含有n个记录的表,查找成功时:

顺序查找方法查找成功的平均 比较次数约为表长的一半。当待查找元素不在查找表中时,也就是扫描整个表都没有找到,即比较了n次,查找失败:

复制代码
/**
在表的第i个位置插入一个新的数据元素e
算法步骤:
1.判断插入位置是否合法,合法范围为1<=L.length<=L.length+1
2.判断存储空间是否已满
3.将最后一个元素到第i位置的元素依次后移
4.将新元素放入第i个位置
5.表长加1
**/
Status ListInsert(SqList &L,int i,ElemType e)
{
	if((i<1)||(i>L.length+1)){
		return error;
	}
	if(L.Length=MAXSIZE){
		return error;
	}
	for(j=L.length-1;j>=i-1;j--){
		L.elem[j+1]=L.elem[j];
	}
	L.elem[i-1]=e;
	L.length=L.Lengh+1;
	return OK;
}

/**
将表的第i个元素删除
算法步骤:
1.判断插入位置是否合法,合法范围为1<=i<=n
2.将第i+1个至第n个元素依次向前移动
3.表长-1
**/
Status ListDelete(SqList &L,int i)
{
	if((i<1)||(i>L.length)){
		return error;
	}
	for(j=i;j>=L.length-1;j++){
		L.elem[j-1]=L.elem[j];
	}
	L.length=L.Lengh-1;
	return OK;
}

下一节:数据结构-线性表的链式存储结构

相关推荐
qq7422349846 小时前
APS系统与OR-Tools完全指南:智能排产与优化算法实战解析
人工智能·算法·工业·aps·排程
数智工坊6 小时前
【数据结构-树与二叉树】4.5 线索二叉树
数据结构
A尘埃7 小时前
超市购物篮关联分析与货架优化(Apriori算法)
算法
.小墨迹7 小时前
apollo学习之借道超车的速度规划
linux·c++·学习·算法·ubuntu
数智工坊7 小时前
【数据结构-树与二叉树】4.3 二叉树的存储结构
数据结构
独好紫罗兰7 小时前
对python的再认识-基于数据结构进行-a004-列表-实用事务
开发语言·数据结构·python
不穿格子的程序员7 小时前
从零开始刷算法——贪心篇1:跳跃游戏1 + 跳跃游戏2
算法·游戏·贪心
大江东去浪淘尽千古风流人物7 小时前
【SLAM新范式】几何主导=》几何+学习+语义+高效表示的融合
深度学习·算法·slam
铉铉这波能秀7 小时前
LeetCode Hot100数据结构背景知识之列表(List)Python2026新版
数据结构·leetcode·list
重生之我是Java开发战士7 小时前
【优选算法】模拟算法:替换所有的问号,提莫攻击,N字形变换,外观数列,数青蛙
算法