#include <stdio.h>
#include <malloc.h>
//定义表结构
typedef struct{
int data[12];
int length;
}SqList;
//创建顺序表
void CreateList(SqList *&L,int a[],int n){
L = (SqList *)malloc(sizeof(SqList));
for(int i = 0;i < n;i++){
L->data[i] = a[i];
}
L->length = n;
}
/*//初始化顺序表
void InitList(SqList *&L){
L = (SqList *)malloc(sizeof(SqList));
L->length = 0;
}*/
//显示顺序表中的元素
void ShowList(SqList *&L){
if (L->length ==0){
printf("该表目前为空");
}
else{
for(int i = 0;i<L->length;i++){
printf("%d",L->data[i]);
printf("\t");
}
}
}
// 插入元素
void InsertList(SqList *&L,int e,int n){
int j = 0;
if(n<1 || n>L->length){
printf("您插入的位置有误,请重新插入");
}
else{
for(j = L->length;j>n;j--){
L->data[j] = L->data[j-1];
}
L->data[n] = e;
L->length++;
}
}
//查找最大数和最小数
void FindMax(SqList *L){
int max = 0;
for(int i = 0;i<L->length;i++){
if(L->data[i]>max){
max = L->data[i];
}
}
printf("该表的最大值是:%d\n",max);
}
void FindMin(SqList *L){
int min = L->data[1];
for(int i = 0;i<L->length;i++){
if(L->data[i]< min){
min = L->data[i];
}
}
printf("该表的最小值是:%d",min);
}
//按元素查找序列号
int SelectList(SqList *L,int e){
int i = 0;
while(i<L->length&&L->data[i] != e){
i++;
}
if(i >= L->length)
return 0;
else
return i+1;
}
//删除表内第n个元素
void DeleteElem(SqList *&L,int n){
int j = 0;
if(n<1||n>L->length){
printf("您输入的数据有误,该表中有%d个元素",L->length);
}
else{
n--;
for(j = n;j<L->length;j++){
L->data[j] = L->data[j+1];
}
L->length--;
printf("第%d个元素已删除",n+1);
}
}
TGV
int main(){
SqList *L;
int a[10] = {10,20,30,40,50,60,70,80,90,100};
CreateList(L,a,10);
int flag;
printf("本次实验题目为1/2/3/4/5/6 \n");
printf("请输入要测试的题目序号:");
scanf("%d",&flag);
if(flag==1){
printf("输出顺序表的所有元素\n");
ShowList(L);
}
else if(flag==2){
printf("输出顺序表中的最大值和最小值\n");
FindMax(L);
FindMin(L);
}
else if(flag==3){
printf("键盘输入一个数x,如x在表中返回其在表中的位序,不在返回相应提示信息\n");
int x;
printf("请输入要查询的元素:");
scanf("%d",&x);
int location = SelectList(L,x);
if (location == 0){
printf("列表中没有您查找的元素");}
else
{printf("您查找的元素在列表中的第%d位",location);}
}
else if(flag==4){
printf("删除顺序表中的第8个元素,并输出顺序表中的所有元素\n");
int n = 8;
DeleteElem(L,n);
printf("删除完成,最新顺序表如下:");
ShowList(L);
}
else if(flag==5){
printf("在第5个元素后面插入新元素55,并输出顺序表中的所有元素\n");
int n = 5;
int e = 55;
InsertList(L,e,n);
printf("插入完成,最新顺序表如下:");
ShowList(L);
}
else if(flag==6){
printf("输出顺序表的长度\n");
printf("顺序表的长度为:%d",L->length);
}
else {
printf("您输入的题目有误,本次实验只有六个题目");
}
}
作者:诗酒趁年华!
qq:664474618
一起学习,一起进步!