顺序表的各项操作
作者:互联网
数据结构顺序表的各项操作
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 20
typedef int ElemType;
typedef struct{
ElemType data[MaxSize];
ElemType length;
}SqList;
void CreateList(SqList *&L,ElemType a[],ElemType n){
int i=0,k=0;
L=(SqList *)malloc(sizeof(SqList));
while(i<n){
L->data[k]=a[i];
k++;
i++;
}
L->length=k;
printf("创建顺序表成功\n");
}
void DisplayList(SqList *&L){
for(int i=0;i<L->length;i++){
printf("%d\n",L->data[i]);
}
}
void ListEmpty(SqList *&L){
if(L->length==0)
printf("该顺序表为空表\n");
else
printf("该顺序表不为空\n");
}
int ListLength(SqList *&L){
return(L->length);
}
int GetElem(SqList *&L,int i){
if(i<1||i>L->length){
printf("error\n");
return -1;
}
else
return(L->data[i-1]);
}
void LocateElem(SqList *&L,int e){
int i=0,t=0;
while(i<L->length){
if(L->data[i]==e){
printf("数字的序号是%d\n",i);
t=1;
}
i++;
}
if(i>=L->length&&t==0)
printf("顺序表中不存在该数\n");
}
bool ListInsert(SqList *&L,int i,int e){
if(i<1&&i>L->length+1)//大于length+1是为了多一个位置插入元素
return false;
i--;
for(int j=L->length;j>i;j--){//j>i是为了在这后面插入一个数
L->data[j]=L->data[j-1];
}
L->data[i]=e;
L->length++;
return true;
}
bool ListDelete(SqList *&L,int i){
if(i<1||i>L->length)
return false;
i--;
for(int j=i;j<L->length;j++)
L->data[j]=L->data[j+1];
L->length--;
return true;
}
void DestroyList(SqList *&L){
free(L);
printf("销毁顺序表成功\n");
}
void AlterList(SqList *&L,int i,int e){
if(i<1||i>L->length){
printf("输入的顺序号有误\n");
return;
}
i--;
L->data[i]=e;
}
int main()
{
int length;
int List_length,order,number,elem,i,e,number2,n;
SqList *L;
ElemType data[MaxSize];
printf("请输入顺序表的长度和数据:");
scanf("%d",&length);
for(int i=0;i<length;i++){
scanf("%d",&data[i]);
}
printf("<-顺序表的操作->\n");
printf("1:创建顺序表\n");
printf("2:销毁顺序表\n");
printf("3:输出顺序表\n");
printf("4:输出顺序表的长度\n");
printf("5:判断顺序表是否为空\n");
printf("6:顺序表插入数据\n");
printf("7:删除顺序表的数据\n");
printf("8:修改顺序表的值\n");
printf("9:按照序号查询顺序表的值\n");
printf("10:按照值查询顺序表的值\n");
while(1){
printf("请输入你要执行的操作序号:");
scanf("%d",&n);
switch(n){
case 1:CreateList(L,data,length);
break;
case 2:DestroyList(L);
break;
case 3:DisplayList(L);
break;
case 4:List_length=ListLength(L);
printf("该顺序表的长度是:%d\n",List_length);
break;
case 5:ListEmpty(L);
break;
case 6:printf("请输入插入序号和插入数字:");
scanf("%d %d",&i,&e);
ListInsert(L,i,e);
break;
case 7:printf("请输入删除数据的序号:");
scanf("%d",&number2);
ListDelete(L,number2);
break;
case 8:printf("请输入要修改的序号和插入数字:");
scanf("%d %d",&i,&e);
AlterList(L,i,e);
break;
case 9:printf("请输入查找数的序号:");
scanf("%d",&order);
elem=GetElem(L,order);
printf("第%d个数是:%d\n",order,elem);
break;
case 10: printf("请输入查找数是:");
scanf("%d",&number);
LocateElem(L,number);
break;
default:
printf("请输入正确的操作序号\n");
}
}
return 0;
}
标签:顺序,int,各项,length,SqList,printf,操作,data 来源: https://blog.csdn.net/weixin_43732607/article/details/115674876