顺序表——静态分配的实现
创销增删改查
#include<stdio.h>
#define MaxSize 10
typedef struct{
int data[MaxSize];
int length;
}SqList;
void InitList(SqList &L){
for(int i=0;i<MaxSize;i++)
L.data[i]=0;
L.length=0;
}
bool ListInsert(SqList &L,int i,int e){
if(i<1||i>L.length+1)
return false;
for(int j=L.length-1;j>=i-1;j--){
L.data[j+1]=L.data[j];
}
L.data[i-1]=e;
L.length++;
return true;
}
bool ListDelete(SqList &L,int i,int &e){
if(i<1||i>L.length)
return false;
e=L.data[i-1];
for(int j=i;j<L.length;j++){
L.data[j-1]=L.data[j];
}
L.length--;
return true;
}
int GetElem(SqList L,int i){
return L.data[i-1];
}
int LocateElem(SqList L,int e){
for(int i=0;i<L.length;i++){
if(L.data[i]==e)
return i+1;
}
return 0;
}
void PrintList(SqList L){
for(int i=0;i<L.length;i++)
printf("%d ",L.data[i]);
}
int main(){
int x;
SqList L;
InitList(L);
printf("向顺序表中插入10个元素:\n");
for(int i=0;i<10;i++){
scanf("%d",&x);
ListInsert(L,i+1,x);
}
printf("输出顺序表:\n");
PrintList(L);
printf("\n");
printf("删除第3个位置的元素并输出:\n");
ListDelete(L,3,x);
PrintList(L);
printf("\n");
printf("删除的元素是:%d\n",x);
printf("\n");
printf("向第3个位置插入元素:\n");
scanf("%d",&x);
ListInsert(L,3,x);
PrintList(L);
printf("\n");
printf("查找第3个位置的元素:\n");
printf("%d\n",GetElem(L,3));
return 0;
}
运行结果:
