#include<stdio.h>
//后插法,此处规定一下(当然也可以前插法)
void insert(int a[],int &len,int index,int x) {
if(index<0 || index>=len) {
printf("插入位置非法!\n");
return;
}
for(int i=len;i>=len-index;i--) {
a[i] = a[i-1];
}
//在第index的索引后面插入,也就是index+1的索引位置插入
a[index+1] = x;
printf("插入成功!\n");
len++;
}
void del(int a[],int &len,int index) {
if(index<0 || index>=len) {
printf("删除位置非法!\n");
return;
}
for(int i=index;i<=len-1;i++) {
a[i] = a[i+1];
}
a[len-1] = 0;
len--;
}
//打印输出
void print(int a[],int len) {
int index=0;
for(int i=0;i<len;i++) {
if(index % 10 == 0) printf("\n");
printf("%d ",a[i]);
index++;
}
}
//查找元素,返回下标位置
int search(int a[], int len, int x) {
int isok=0;
int index=0;
for(int i=0;i<len;i++) {
if(a[i] == x) {
isok = 1;
index = i;
break;
}
}
if(isok == 1) return index;
else return -1;
}
int main() {
int len;
int a[100000]={0};
printf("请输入顺序表的长度:\n");
scanf("%d",&len);
printf("请依次输入顺序表的元素:\n");
for(int i=0;i<len;i++) {
scanf("%d",&a[i]);
}
int index=0, n=0;
while(1) {
printf("1-插入;2-删除;3-数据显示;4-查找\n");
printf("请输入功能代号:\n");
int fun=0;
scanf("%d",&fun);
if(fun == 1) {
printf("请输入插入的位置,元素(以空格分开):");
scanf("%d%d",&index, &n);
insert(a,len,index,n);
printf("插入后的数组为:\n");
print(a,len);
printf("\n\n");
} else if(fun == 2) {
printf("请输入删除的位置:");
scanf("%d",&index);
del(a,len,index);
printf("删除后的数组为:\n");
print(a,len);
printf("\n\n");
} else if(fun == 3) {
print(a,len);
printf("\n\n");
} else if(fun == 4) {
//system("cls");
printf("请输入要查找的元素:");
scanf("%d",&index);
int x = search(a,len,index);
if(x != -1) printf("查找到的索引是:%d\n",x);
else {
printf("没找到!\n");
}
printf("\n\n");
} else {
printf("没有这个功能!请重新输入!\n");
}
}
return 0;
}
顺序表简单操作
猜你喜欢
转载自blog.csdn.net/Kevin__Coder/article/details/105389040
今日推荐
周排行