数据结构1——顺序表的增删改查排序
数据结构的第一课就是顺序表的增删改查排序问题。顺序表相对于链表来说是一种相对简单的线性结构,其中涉及到了数据的添加,删除,查找,排序,遍历,和销毁。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define Max 1024
typedef int elemtype;
typedef struct sequlist{
elemtype date[Max];
int last;
}SequenList;
int getdate(SequenList *L);
int meau();
int shanchu(SequenList *L,int n);
int chazhao(SequenList *L,int n);
int charu(SequenList *L,int n,int x);
void paixu(SequenList *L);
int main(){
int n=1,date;
SequenList *L;
L=(SequenList *)malloc(sizeof(SequenList));
L->last=-1;
getdate(L);
while(n!=0){
meau();
scanf("%d",&n);
if(n==1){
printf("请输入要删除的元素\n");
scanf("%d",&date);
if(shanchu(L,date)==0)
printf("不存在该元素,删除失败\n");
else
printf("删除成功\n");
}
else if(n==6){
int i;
for(i=0;i<=L->last;i++){
printf("%d ",L->date[i]);
}
printf("\n");}
else if(n==2){
int sort;
printf("请输入要查找的元素:\n");
scanf("%d",&sort);
if(chazhao(L,sort)==0)
printf("未找到该元素\n");
else
printf("该元素的位置为:%d\n",chazhao(L,n));
}
else if(n==3){
int ins,in;
printf("请输入要插入的元素的位置和值:\n");
scanf("%d %d",&ins,&in);
if(charu(L,ins,in)==0)
printf("插入失败\n");
else
printf("插入成功\n");
}
else if(n==4){
printf("排序成功\n");
paixu(L);
}
else if(n==5){
free(L);
}
}
printf("退出成功\n");
}
int getdate(SequenList *L){
int i;
scanf("%d",&i);
while(i!=0){
L->date[L->last+1]=i;
L->last=L->last+1;
scanf("%d",&i);
}
}
int meau(){
printf("请输入操作指令:\n");
printf("1:删除\n2:查找\n3:插入\n4:排序\n5:销毁\n6: 遍历\n0:退出\n");
}
int shanchu(SequenList *L,int n){
int j,i;
for(i=0;i<L->last+1;i++){
if(L->date[i]==n){
break;
}
}
if(i==L->last+1){
return 0;
}
for(j=i;j<=L->last;j++){
L->date[j]=L->date[j+1];
}
L->last--;
return 1;
}
int chazhao(SequenList *L,int n){
int i;
for(i=0;i<=L->last;i++){
if(L->date[i]==n){
return i+1;
}
}
return 0;
}
int charu(SequenList *L,int n,int x){
int i;
if(n<1||n>L->last+2)
return 0;
for(i=L->last;i>=n-1;i--){
L->date[i+1]=L->date[i];}
L->date[n-1]=x;
L->last=L->last+1;
return 1;
}
void paixu(SequenList *L){
int i,min,j,x,t;
for(i=0;i<=L->last;i++){
min=L->date[i];
x=i;
for(j=i;j<=L->last;j++){
if(L->date[j]<min){
min=L->date[j];
x=j;
}
}
t=L->date[i];
L->date[i]=L->date[x];
L->date[x]=t;}
}
希望采纳,以后会相继更新数据结构的其他内容。