#include<stdio.h>
#define MAXLEN 100
typedef struct{
int data[MAXLEN];
int length;
}SeqList;
//顺序表的初始化
void InitList(SeqList* L){
L->length = 0;
}
//顺序表的建立
void createSeqList(SeqList* L){
int i,n;
printf("请输入您要初始化的数值的个数");
scanf("%d",&n);
for(i = 0;i < n;i++){
scanf("%d",&L->data[i]);
}
L->length = n;
}
//顺序表的查找1.按位置
int getElem(SeqList* L,int i){
if(i < 1||i > L->length)
return 0;
else
return L->data[i - 1];
}
//顺序表的查找2.按值
int locate(SeqList* L,int n){
int i = 0;
while(L->data[i]!=n&&i<L->length)
i++;
if(i>=L->length)
return 0;
else
return i + 1;
}
//插入操作
int InPut(SeqList* L,int i,int x){
int j;
if(L->length>=MAXLEN){
printf("已满!");
return -1;
}
if(i <1||i>L->length+1){
printf("位置有错");
return 0;
}
if(i==L->length+1){
L->data[i-1]=x;
L->length++;
return 1;
}
for(j = L->length - 1;j >= i - 1;j--){
L->data[j+1] = L->data[j];
}
L->data[i - 1] = x;
L->length++;
return 1;
}
//删除操作
int OutPut(SeqList* L,int i){
int j;
if(i <1||i>L->length+1){
printf("位置有错");
return 0;
}
for(j = i - 1;j < L->length - 1;j++){
L->data[j] = L->data[j + 1];
}
L->length--;
return 1;
}
//输出表内元素
void PrintSeq(SeqList* L){
int i;
for(i = 0;i < L->length;i++)
printf("%5d",L->data[i]);
}
//菜单函数
void Menu(){
printf("\n 顺序表的操作");
printf("\n========================================================");
printf("\n| 1----建立顺序表 |");
printf("\n| 2----插入元素 |");
printf("\n| 3----删除元素 |");
printf("\n| 4----按位置查找值 |");
printf("\n| 5----按值查找位置 |");
printf("\n| 6----求顺序表长度 |");
printf("\n| 0----返回 |");
printf("\n========================================================");
printf("\n请输入您需要的指令");
}
//主函数
int main(){
SeqList L;
InitList(&L);
printf("================顺序表初始化完成==========================");
char choice = 'y';
int c,x,i;
while(choice=='y'){
Menu();
scanf("%d",&c);
switch(c){
case 1:
createSeqList(&L);
PrintSeq(&L);
break;
case 2:
printf("\n请输入您要插入的位置i:");
scanf("%d",&i);
printf("\n请输入您要插入的值x:");
scanf("%d",&x);
InPut(&L,i,x);
PrintSeq(&L);
break;
case 3:
printf("\n请输入您要删除的位置i:");
scanf("%d",&i);
OutPut(&L,i);
PrintSeq(&L);
break;
case 4:
printf("\n请输入您要查找的位置i:");
scanf("%d",&i);
printf("第%d个位置元素为%d",i,getElem(&L,i));
break;
case 5:
printf("\n请输入您要查找的值x:");
scanf("%d",&x);
printf("元素%d在第%d位",x,locate(&L,x));
break;
case 6:
printf("\n长度为%d",L.length);
break;
case 0:
choice ='0';
break;
}
}
}
版权声明:本文为Nutinsist原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。