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

顺序表(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;
}

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

相关推荐
地平线开发者2 小时前
J6B vio scenario sample
算法
BothSavage14 小时前
Trae远程开发中DeepSeek自定义模型4054错误的排查与修复
算法
小林ixn14 小时前
从暴力到KMP:一道题彻底搞懂字符串匹配的前世今生
算法
烬羽15 小时前
字符串算法入门:从反转字符串到回文判断,面试不再慌
算法·面试
先吃饱再说1 天前
判断回文字符串,从一行代码到双指针优化
算法
黄敬峰1 天前
深入理解算法核心:从递归思想、数组扁平化到快速排序
算法
得物技术1 天前
从狂野代码到按目标生产:得物推荐 AI Harness 的工程化实践|AICon 演讲整理
人工智能·算法·架构
AI小老六2 天前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
后端·算法·ai编程