数据结构实验(二)。1

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #define LIST_INIT_SIZE 100
  4 #define LISTINCREMENT 10
  5 #define OK 1
  6 #define ERROR 0
  7 #define OVERFLOW -2
  8 typedef int EleType;
  9 typedef struct{
 10     int length;
 11     int *elem;
 12     int listsize;
 13 }SqList;
 14 //创建顺序表并输入值 
 15 int Initlist(SqList *L){
 16     L->elem = (int*)malloc(sizeof(int));
 17     if(!L->elem) exit(OVERFLOW);
 18     printf("分配成功\n");
 19     int i,j,k,l;
 20     printf("请输入5个元素:\n");
 21     for(i=0;i<5;i++){
 22         scanf("%d",&L->elem[i]);
 23     }
 24     L->length = i;
 25     L->listsize = i*LISTINCREMENT;
 26     return OK;
 27 } 
 28 //返回顺序表中的第i个元素 
 29 int GetElem(SqList L,int i,int &e){
 30     if(i<1||i>L->length) return ERROR;
 31     int j;
 32     e = L->elem[i-1];
 33     return OK;
 34 }
 35 //查找顺序表中的值为e的元素返回下标
 36 int LocateElem(SqList L,int j,int &e){
 37     int i;
 38     for(i=0;i<L->length;i++){
 39         if(L->elem[i]==j){
 40             e = i+1;
 41             return OK;
 42         }
 43     }
 44     return ERROR;
 45 } 
 46 //在顺序表i个位置插入e的元素
 47 int InsList(SqList L,int i,int e){
 48     //若储存空间已满需要进行再分配 
 49     int j;
 50     if(i<1||i>L->length) return ERROR;
 51     for(j=L->length-1;j>i;j--){
 52         L->elem[j+1] = L->elem[j];
 53     }
 54     L->elem[i-1] = e;
 55     L->length+=1;
 56     return OK;
 57 } 
 58 //删除顺序表中的第i个位置的元素并用e返回删除掉的元素 
 59 int DEList(SqList L,int i,int &e){
 60     if(i<1||i>L->length) return ERROR;
 61     int j;
 62     e = L->elem[j-1];
 63     for(j=i;j<L->length;j++){
 64         L->elem[j-1] = L->elem[j];
 65     }
 66     return OK;
 67 } 
 68 //打印顺序表中的元素
 69 int print(SqList L) {
 70     int i;
 71     for(i=0;i<L->length;i++){
 72         printf("%d\t",L->elem[i]);
 73     }
 74     
 75     printf("\n");
 76     return OK;
 77 }
 78 int main(){
 79     SqList *L;
 80     if(Initlist(L)){
 81         printf("创建成功\n");
 82     }
 83     else printf("创建失败\n");
 84     int x,i,e;
 85     printf("*************欢迎使用菜单************\n");
 86     do{
 87         printf("1:输出顺序表中的所有数据\n");
 88         printf("2:查询顺序表的中的第i个元素的值\n");
 89         printf("3:查询顺序表中的值是否等于e若等于则返回下标\n");
 90         printf("4:在顺序表中的i个位置插入元素e\n");
 91         printf("5:删除顺序表中的第i个元素\n");
 92         printf("0: 退出\n");
 93         scanf("%d",&x);
 94         switch(x)
 95         {
 96             case 1: if(print(L)) break;
 97             case 2: printf("请输入i的值:");
 98                     scanf("%d",&i);
 99                     if(GetElem(L,i,e)){
100                         printf("\n第i个值为:%d",e);
101                     } 
102                     else printf("查找失败");
103                     break;
104             case 3: printf("请输入需要查找的值:");
105                     scanf("%d",&i);
106                     if(LocateElem(L,i,e)){
107                         printf("\n")
108                     }
109         }
110     }while(1);
111 }

 

posted @ 2020-09-24 09:30  西南大学  阅读(127)  评论(0)    收藏  举报