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

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

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

相关推荐
小葡萄202513 分钟前
黑马程序员C++2024新版笔记 第三章 数组
笔记·算法·c++20
勇闯逆流河7 小时前
【数据结构】堆
c语言·数据结构·算法
pystraf7 小时前
LG P9844 [ICPC 2021 Nanjing R] Paimon Segment Tree Solution
数据结构·c++·算法·线段树·洛谷
飞川撸码8 小时前
【LeetCode 热题100】739:每日温度(详细解析)(Go语言版)
算法·leetcode·golang
yuhao__z8 小时前
代码随想录算法训练营第六十六天| 图论11—卡码网97. 小明逛公园,127. 骑士的攻击
算法
Echo``8 小时前
3:OpenCV—视频播放
图像处理·人工智能·opencv·算法·机器学习·视觉检测·音视频
Nobkins9 小时前
2021ICPC四川省赛个人补题ABDHKLM
开发语言·数据结构·c++·算法·图论
88号技师9 小时前
2025年6月一区SCI-不实野燕麦优化算法Animated Oat Optimization-附Matlab免费代码
开发语言·算法·matlab·优化算法
ysy164806723910 小时前
03算法学习_977、有序数组的平方
学习·算法
codists10 小时前
《算法导论(第4版)》阅读笔记:p83-p85
算法