网站建设所需基本资料,网站字体大小选择,手机百度助手,服务好的网站建设前言
线性表的顺序存储及基本操作的实现 一、数据对象集
线性表#xff08;List#xff09;是由n个元素构成的有序序列#xff0c;用户处理线性表数据时常常需要初始化、查找、插入、删除、计算数据长度等操作。
数据Data利用数组存储#xff0c;利用下标使得查找 等操作…前言
线性表的顺序存储及基本操作的实现 一、数据对象集
线性表List是由n个元素构成的有序序列用户处理线性表数据时常常需要初始化、查找、插入、删除、计算数据长度等操作。
数据Data利用数组存储利用下标使得查找 等操作十分方便。Last始终存储最后一个元素的数组下标可以用于判断数组长度。在初始化时Last的值为-1。
typedef struct LNode*List;
struct LNode{ElementType Data[MAXSIZE]; //利用数组的连续存储空间顺序存放线性表的各元素 int Last; //指向最后一个元素
};
struct LNode L;
List PtrL;
二、操作集
线性表的基本操作包括
List MakeEmpty(); //初始化一个空线性表
ElementType KFind(int K,List L); //根据位序K返回相应元素
int Find(ElementType X,List L); //在线性表L中查找X第一次出现的位置
void Insert(ElementType X,int i,List L); //在位序i前插入一个新元素X
void Delete(int i,List L); //删除指定位序i的元素
int Length(List L); //返回线性表L的长度
基本操作的实现
1.初始化
List MakeEmpty()
{List PtrL;PtrL (List)malloc(sizeof(struct LNode));PtrL-Last -1;return PtrL;
}
创建一个空线性表并返回其指针。
2.查找
int Find(ElementType X,List PtrL)
{int i 0;while(i PtrL-Last PtrL-Data[i] ! X)i;if(i PtrL-Last) //如果没找到返回-1return -1;elsereturn i;
} 3.插入
void Insert(ElementType X,int i,List PtrL)
{int j;if(PtrL-Last MAXSIZE - 1) //表满无法插入 {printf(表满\n);return ;}if(i 1 || i PtrL-Last2) //检查插入位置合法性 {printf(插入位置不合法\n);return ;}for(j PtrL-Last;j i-1;j--)PtrL-Data[j1] PtrL-Data[j];PtrL-Data[i-1] X;PtrL-Last;
}
4.删除
void Delete(int i,List PtrL)
{int j;if(i 1 || i PtrL-Last 1) //检查空表及删除位置的合法性 {printf(不存在第%d个元素\n,i);return ;}for(j i;j PtrL-Last;j)PtrL-Data[j-1] PtrL-Data[j];PtrL-Last--;
} 总结
EOF