#include<stdio.h>
typedef struct{
ElementType Data[MAXSIZE];
int Last;
} List;
void main{
//1 初始化 建立空的顺序表
List *MakeEmpty(){
List *PtrL;
PtrL = (List *)malloc(sizeof(List));
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) return -1; //如果没有找到 返回-1
else return i; //如果找到了 返回的是存储位置
}
}
//3 插入(第i(1<=i<=n+1)个位置插入一个值为x的新元素)
//在进行插入的操作时 得先把第i开始的数为后移一位 再对空出来的第i位进行赋值
void Insert(ElementType x,List *PtrL){
int j;
//检测表是否满了
if(PtrL->Last == MAXSIZE-1){
printf("表满");
return;
}
//i的值小于1或者i的值大于表长
if(i<1 ||i> PtrL->Last+2){
printf("位置不合法");
return;
}
//移动并且插入
for(j=PtrL->Last;j>=i-1;j--){
PtrL->Data[j+1] = PtrL->Data[j]; //将第i到last的值倒序向后移动
PtrL->Data[i-1] = x;
PtrL->Last++;
return ;
}
}
//4 删除(删除表的第i(1<=i<=n)个位置上的数)
//这里跟添加类似 只不过是第i个数开始往前移动 不需要额外 "删除这个动作"
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]; //将a_i+1--a_n顺序向前移动
PtrL->Last --; //Last仍指向最后元素
return ;
}
}
数据结构:线性表
最新推荐文章于 2024-05-12 16:53:40 发布