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

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

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

相关推荐
茉莉玫瑰花茶15 分钟前
floodfill 算法(dfs)
算法·深度优先
CoderCodingNo1 小时前
【GESP】C++五级考试大纲知识点梳理, (5) 算法复杂度估算(多项式、对数)
开发语言·c++·算法
学编程就要猛1 小时前
数据结构初阶:时间和空间复杂度
数据结构
MYX_3091 小时前
第三章 线型神经网络
深度学习·神经网络·学习·算法
坚持编程的菜鸟2 小时前
LeetCode每日一题——三角形的最大周长
算法·leetcode·职场和发展
Chloeis Syntax3 小时前
接10月12日---队列笔记
java·数据结构·笔记·队列
Moniane4 小时前
FastGPT 与 MCP 协议概述
算法
草莓工作室4 小时前
数据结构7:栈和队列
c语言·数据结构
Meteor_cyx4 小时前
Day12 二叉树遍历
算法
加藤不太惠5 小时前
十大排序其六
算法·排序算法