线性结构
Posted alex3o
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性结构相关的知识,希望对你有一定的参考价值。
线性表
由同类型数据元素构成有序序列的线性结构
- 表中元素个数称为线性表的长度
- 线性表没有元素时,称为空表
- 表起始位置称表头,表结束位置称表尾
线性表的抽象数据类型描述
- 线性表是n个元素构成的有序序列
性表基本操作
- List MakeEmpty() 初始化一个空线性表L
List MakeEmpty(){
List PtrL;
PtrL=(List)malloc(sizeof(struct LNode));
PtrL->Last=-1;
return PtrL;
}
- ElemType_FindKth(int K,List L) 根据位序K,返回相应元素
- int Find(ElementType X,List L) 在线性表L中查找X的第一次出现位置
int Find(ElementType X,List PtrL){
int i=0;
while(i<=PtrL->Last && PtrL->Data[i]=X)
i++;
if(i>PtrL->Last) return -1 //如果没有找到 返回-1
else return i; //找到后返回存储位置
}
- void insert(ElementType X,int i,List L) 在位序前插入一个新元素X
void insert(ElementType X,int i,List Ptrl){
int j;
if(PtrL->Last==MAXSIZE-1){ //表空间已满 不能插入
printf("表满");
return;
}
if(i<1||i>PtrL->Last+2){ //检查插入位置的合法性
printf("位置不合法");
return;
}
for(j=PtrL->Last;j>=i-1;j)
PtrL->Data[j+1]=PtrL->Data[j]; //将a[i]-a[n]倒序向后移动
PtrL->Data[i-1]=X; //新元素插入
PtrL->Last++; //Last仍指向最后的元素
return;
- void Delete(int i,List L) 删除指定位序i的元素
void Delete(int i,List Ptrl){
int j;
if(i<1||i>Ptrl->Last+1){
printf("不存在第%d个元素",i);
return;
}
for(j=i;j<=PtrL->Last;j++)
PtrL->Data[j-1]=PtrL->Data[j];
PtrL->Last--;
return;
- int Length(List L) 返回线性表L的长度n
增删改查
线性表的顺序存储结构
- 利用数组的连续存储空间顺序存放线性表的各元素
typedef struct LNode*list;
struct LNode{
ElementType Data[MaxSize];
int Last;
};
struct LNode L;
List PtrL;
以上是关于线性结构的主要内容,如果未能解决你的问题,请参考以下文章