#include"stdio.h" #include"stdlib.h" #include"conio.h" #define LIST_SIZE 1000 typedef struct{ int length; int data[LIST_SIZE]; }SqList; void List_Init(SqList &L) //线性表初始化 {int i; for(i=0;i<=LIST_SIZE-1;i++) L.data[i]=NULL; L.length=0; } void List_Insert(SqList &L,int i,int e) { if(i<1||i>L.length+1) {printf("此位置不在允许范围!\n");} else if(L.length>=LIST_SIZE) printf("储存空间不足\n"); else{ int *q=&L.data[i-1]; for(int *p=&L.data[L.length-1];p>=q;--p) *(p+1)=*p; *q=e; ++L.length; printf("插入成功!\n"); } } void List_Delete_Pos(SqList &L,int i) { if(i<1||i>L.length+1) {printf("此位置不在允许范围!\n");} else{ int *q=&L.data[i-1]; for(int *p=&L.data[L.length-1];p>=q+1;q++) *q=*(q+1); --L.length; printf("删除成功!\n") ; } } void List_Delete_Elem(SqList &L,int e) { int j,count=0; for(j=0;j<=L.length-1;j++) if(L.data[j]==e) { int *q=&L.data[j]; for(int *p=&L.data[L.length-1];p>=q+1;q++) *q=*(q+1); --L.length; count++; printf("删除成功!次数:%d\n",count) ; } if(count==0) printf("顺序表中未找到此元素!\n"); } void List_Replce_Pos(SqList &L,int i,int e) { if(i<1||i>L.length+1) {printf("此位置不在允许范围!\n");} else{ L.data[i-1]=e; printf("替换成功!\n") ;} } void List_Replace_Elem(SqList &L,int e,int a) { int j,count=0; for(j=0;j<=L.length-1;j++) if(L.data[j]==e) { L.data[j]=a;count++; printf("替换成功!次数:%d\n",count); } if(count==0) printf("顺序表中未找到此元素!\n"); } void List_Find_Pos(SqList &L,int i) { if(i<1||i>L.length+1) {printf("此位置不在允许范围!\n");} else printf("此位置的元素为:%d\n",L.data[i-1]); } void List_Find_Elem(SqList &L,int e) { int j,flag=0; printf("经查找,结果如下:\n"); for(j=0;j<=L.length-1;j++) if(L.data[j]==e) { printf("位置:%d ",j+1); flag=1; } if(flag==0) printf("线性表中没有找到此元素!"); printf("\n"); } void List_Show_All(SqList &L) { int j; printf("线性表中所有元素如下:\n"); for(j=0;j<=L.length-1;j++) printf("%d\n",L.data[j]); } void List_Show_Length(SqList &L) { printf("线性表长度为:%d\n",L.length); } void List_Clear(SqList &L) { List_Init(L); printf("线性表已清空!\n"); } void mainmenu() { printf("**********顺序表操作功能菜单***************\n"); printf("1.插入元素 2.按位置删除 \n"); printf("3.按元素删除 4.按位置查找 \n"); printf("5.按元素查找 6.查看所有元素 \n"); printf("7.查看表长 8.清空表 \n"); printf("9.按位置替换 10.按元素替换 \n"); printf("11.退出程序 \n"); printf("*******************************************\n"); } int main() { SqList L; List_Init(L); loop: mainmenu(); int x; int i,e; printf("请输入功能选项的相应序号:\n"); scanf("%d",&x); system("cls"); switch(x) { case 1: printf("请输入要插入元素的位置和要插入的元素的值:\n"); scanf("%d%d",&i,&e); List_Insert(L,i,e); system("pause"); system("cls"); goto loop; break; case 2: printf("请输入要删除元素的位置:\n"); scanf("%d",&i); List_Delete_Pos(L,i); system("pause"); system("cls"); goto loop; break; case 3: printf("请输入要删除的元素的值:\n"); scanf("%d",&e); List_Delete_Elem(L,e); system("pause"); system("cls"); goto loop; break; case 4: printf("请输入要查找元素的位置:\n"); scanf("%d",&i); List_Find_Pos(L,i); system("pause"); system("cls"); goto loop; break; case 5: printf("请输入要查找的元素的值:\n"); scanf("%d",&e); List_Find_Elem(L,e); system("pause"); system("cls"); goto loop; break; case 6: List_Show_All(L); system("pause"); system("cls"); goto loop; break; case 7: List_Show_Length(L); system("pause"); system("cls"); goto loop; break; case 8: List_Clear(L); system("pause"); system("cls"); goto loop; break; case 9: printf("请输入被替代元素的位置和替代元素的值:\n"); scanf("%d%d",&i,&e); List_Replce_Pos(L,i,e); system("pause"); system("cls"); goto loop; break; case 10: printf("请输入被替代元素的值和替代元素的值:\n"); scanf("%d%d",&e,&i); List_Replace_Elem(L,e,i); system("pause"); system("cls"); goto loop; break; case 11: printf("感谢您的使用!!\n"); system("pause"); return 0; default: printf("输入有误!\n"); system("pause"); system("cls"); goto loop; break; } return 0; }
数据结构-线性表的顺序储存
猜你喜欢
转载自blog.csdn.net/qq_40251838/article/details/80548530
今日推荐
周排行