数据结构——顺序表

include<stdio.h>

include<stdlib.h>

define maxsize 30

typedef struct{
int data[maxsize];
int n;
}Seqlist;

int scanfdata(Seqlist &L){
int i,n;
printf("请问要输入几个数据:");
scanf("%d",&n);
if(n>maxsize){
printf("顺序表长度不够! ");
printf("请问要输入几个数据:");
scanf("%d",&n);
}
L.n=n;
printf("请输入数据:");
for(i=0;i<L.n;i++){
scanf("%d",&L.data[i]);
}
printf("顺序表长度为:");
printf("%d ",L.n);
}

void printfdata(Seqlist &L){
int i;
printf("输出所有数据:");
for(i=0;i<L.n;i++){
printf("%d ",L.data[i]);
}
printf(" ");
return;
}

void insert(Seqlist &L){
int a[10],b,i,c;
printf("请问要插入几个元素:");
scanf("%d",&c);
for(i=0;i<c;i++){
printf("请输入要插入的元素:");
scanf("%d",&a[i]);
}
printf(" ");
printf("请输入要插入的位置:");
scanf("%d",&b);
if(L.n>maxsize+c){
printf("不能插入 ");
return;}
if(b<1||b>L.n+1){
printf("超出了顺序表范围! ");
printf("请在输入要插入的位置:");
scanf("%d",&b);
}
printf(" ");
for( i=L.n+1;i>b;i--){
L.data[i]=L.data[i-2];
}
for(i=0;i<c;i++){
L.data[b-1+i]=a[i];
}

	  L.n+=c;
	  return;
} 

void remove(Seqlist &L){
int a,i,b;
printf("请输入要删除元素的第一个位置:");
scanf("%d",&a);
printf("请问要删除几个元素:");
scanf("%d",&b);
printf(" ");
if(!L.n) {
printf("顺序表为空!");
printf("请在输入要删除元素的位置:");
}
if(a<1||a>L.n){
printf("超出顺序表范围!");
return;
}
for(i=(a+b-1);i<L.n+1;i++){
L.data[i-b]=L.data[i];
}
L.n=L.n-b;
return;
}

void find(Seqlist &L){
int a,i;
printf("请输入要查找的元素:");
scanf("%d",&a);
for(i=0;i<L.n;i++){
if(L.data[i]a){
printf("这个元素在这个顺序表中,并且它的逻辑序号是:");
printf("%d",i+1);
return;
}
}if(i
L.n){
printf("没有找到这个元素 ");
return;
}}

int main(){
Seqlist L;
scanfdata(L);
printfdata(L);
insert(L);
printfdata(L);
remove(L);
printfdata(L);
find(L);
printfdata(L);
return 0;
}

原文地址:https://www.cnblogs.com/lusilin/p/10686450.html