#include<cstdio>
#include <cstdlib>
#define max_size 10
typedef int datatype;
typedef struct {
datatype data[max_size];
int length;
}seqlist;
int Creatlist(seqlist *L,const datatype a[],int n){
if(n>max_size){
printf("no enough space to put all in\n");
}
else{
for(int i=0;i<n;i++){
L->data[i]=a[i];
}
printf("\n");
L->length=n;
return 1;
}
}
void length(seqlist *L){
printf("顺序表的长度");
printf("%d\n",L->length);
}
void printlist(seqlist *L){
for(int i=0;i<L->length;i++){
printf("%d ",L->data[i]);
}
printf("\n");
}
void valuefind(seqlist *L,datatype x){
int flag=1;
printf("它的位置是:\n");
for(int i=0;i<L->length;i++){
if(L->data[i]==x){
printf("%d ",i+1);
flag=0;
}
}
printf("\n");
if(flag){
printf("not found\n");
}
}
int placefind(seqlist *L,datatype x){
if(x>L->length){
printf("value not exsit\n");
return -1;
}
else{
printf("它的值是:\n");
printf("%d\n",L->data[x-1]);
return L->data[x-1];
}
}
int insert(seqlist *L,int i,datatype x){
if(L->length==max_size){
printf("上溢错误,插入失败\n");
return 0;
}
if(i<1||i>L->length+1){
printf("位置错误,插入失败\n");
return 0;
}
for(int j=L->length;j>=i;j--){
L->data[j]=L->data[j-1];
}
L->data[i-1]=x;
L->length++;
printf("插入成功\n");
return 1;
}
int place_delete(seqlist *L,int i,datatype *ptr){
if (L->length == 0) {printf("下溢错误,删除失败\n"); return 0;}
if (i < 1 || i > L->length) {printf("位置错误,删除失败\n"); return 0;}
*ptr = L->data[i - 1];
for (int j = i; j < L->length; j++){
L->data[j - 1] = L->data[j];
}
L->length--;
printf("删除成功\n");
return 1;
}
int main(){
int n,x,m,b;
datatype ptr;
// ptr=NULL;
printf("***创建一个顺序表***\n");
printf("place in put the size of array\n");
scanf("%d",&n);
int a[n];
printf("place in put elments\n");
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
seqlist L;
Creatlist(&L,a,n);
printf("***请你选择以下操作:**\n");
printf("***1.顺序表中按值查找\n");
printf("***2.顺序表中按位查找\n");
printf("***3.在顺序表中的插入一个元素\n");
printf("***4.删除顺序表特定位置元素\n");
printf("***5.打印顺序表\n");
printf("***6.顺序表的长度\n");
scanf("%d",&m);
while(m){
switch(m){
case 1:printf("place in put the number you want to find\n");
scanf("%d",&x);
valuefind(&L,x);
break;
case 2:printf("place in put the number's place you want to find\n");
scanf("%d",&b);
placefind(&L,b);
break;
case 3:printf("place in put the number's place and number you want to insert\n");
scanf("%d%d",&b,&x);
insert(&L,b,x);
break;
case 4: printf("place in put the number which's place you want to delete\n");
scanf("%d",&b);
place_delete(&L,b,&ptr);
printf("被删除元素是:%d\n",ptr);
break;
case 5: printlist(&L);break;
case 6: length(&L);break;
}
system("pause");
system("cls");
printf("***请你选择以下操作:***\n");
printf("***1.顺序表中按值查找\n");
printf("***2.顺序表中按位查找\n");
printf("***3.在顺序表中的插入一个元素\n");
printf("***4.删除顺序表中特定位置元素\n");
printf("***5.打印顺序表\n");
printf("***6.顺序表的长度\n");
printf("***0.退出\n");
scanf("%d",&m);
}
return 0;
}
顺序表的实现
最新推荐文章于 2023-04-08 16:54:33 发布