4月2日学习打卡

今天没有学习新的知识,做了一个c语言的静态顺序表附代码:

  1 #include"stdio.h"
  2 #include"stdlib.h"
  3 #define MaxSize 50
  4 typedef int DataType;
  5 typedef struct data
  6 {
  7     DataType data[MaxSize];
  8     int length;
  9 }SeqList;
 10 //初始化线性表 
 11 void initList(SeqList &L)
 12 {
 13     int n;
 14     printf("请输出您需要在线性表中输入多少个元素:"); 
 15     scanf("%d",&n);
 16     for(int i = 0; i < n; i++)
 17     {
 18         printf("请输入第%d个元素:",i+1);
 19         scanf("%d",&L.data[i]);
 20     }
 21     L.length = n;
 22     printf("初始化成功!");
 23 }
 24 //得到线性表的长度 
 25 int getLength(SeqList &L)
 26 {
 27     return L.length;
 28 }
 29 //得到线性表中第i个元素
 30 DataType getElem(SeqList &L , int i)
 31 {
 32     //判断输出的第i个元素符不符合常规 
 33     if(i<1 || i>L.length)
 34     {
 35         printf("输入错位,没有第%d个元素\n",i);
 36         return -1;
 37     }
 38     return L.data[i-1];
 39 }
 40 //查找线性表中的该元素,如果存在一个或多个与x相等的元素则返回第一个值为x的元素的逻辑序号
 41 int Locate(SeqList &L , int x)
 42 {
 43     for(int i = 0; i<L.length ; i++)
 44     { 
 45         if(L.data[i] == x)
 46         {
 47             return i+1;
 48         }
 49     }
 50     //如果循环结束函数还没有结束,那就证明该线性表中没有x这个元素,所以返回-1 
 51     return -1;
 52 } 
 53 //插入元素到线性表
 54 void  insElem(SeqList &L , int x , int i )
 55 {
 56     //判断输出的第i个元素符不符合常规 
 57     if(i<1 || i>L.length)
 58     {
 59         printf("输入错位,没有第%d个元素\n",i);
 60         return ;
 61     }
 62     for(int j = L.length-1 ; j >= i-1 ; j--)
 63     {
 64         L.data[j+1] = L.data[j];
 65     }
 66     L.data[i-1] = x ;
 67     L.length++;
 68     printf("插入成功!\n");
 69 }
 70 //从线性表中删除元素 
 71 void delElem(SeqList &L , int i)
 72 {
 73     //判断输出的第i个元素符不符合常规 
 74     if(i<1 || i>L.length)
 75     {
 76         printf("输入错位,没有第%d个元素\n",i);
 77         return ;
 78     }
 79     for(int j = i-1 ; j < L.length ; j++)
 80     {
 81         L.data[j] = L.data[j+1];
 82     }
 83     L.length--;
 84     printf("删除成功!\n");
 85 }
 86 //输出线性表中的所有元素 
 87 void dispList(SeqList &L)
 88 {
 89 
 90     for(int i = 0; i < L.length; i++)
 91     {
 92         printf("第%d个元素为:%d\n",i+1,L.data[i]);
 93     }
 94 }
 95 //显示提示信息
 96 void showPrompt()
 97 {
 98     printf("请输入1-8\n");
 99     printf("1:初始化线性表\n");
100     printf("2:得到线性表的元素总数\n");
101     printf("3:得到线性表中的一个元素\n");
102     printf("4:查找线性表中是否存在一个值,并返回第一个值的序号\n");
103     printf("5:插入一个元素\n");
104     printf("6:删除一个元素\n");
105     printf("7:输出线性表中的所有元素\n");
106     printf("8:退出\n");
107 } 
108 main()
109 {
110     SeqList L;
111     int i;
112     int x;
113     int n;
114     int t;
115     while(1)
116     {
117         showPrompt();
118         scanf("%d",&n);
119         switch(n)
120         {
121             case 1:
122                 initList(L);
123                 break;
124             case 2:
125                 printf("线性表的长度为:%d\n",getLength(L));
126                 break;
127             case 3:
128                 printf("请输入您需要得到第几个元素:\n");
129                 scanf("%d",&i);
130                 t = getElem(L , i);
131                 if(t != -1)
132                 {
133                     printf("第%d个元素的值为%d\n",i,t);
134                 }
135                 else
136                 {
137                     printf("输入错误!\n");
138                 }
139                 break;
140             case 4:
141                 printf("请输入您需要查找的元素为:\n");
142                 scanf("%d",&x);
143                 t = Locate(L , x);
144                 if(t != -1)
145                 {
146                     printf("%d第一次出现在该顺序表中的第%d个\n",x,t);
147                 }
148                 else
149                 {
150                     printf("该元素表中没有该元素\n");
151                 }
152                 break;
153             case 5:
154                 printf("请输入您需要插入的位置与元素值:\n");
155                 scanf("%d",&i);
156                 scanf("%d",&x);
157                 insElem(L , x , i);
158                 break;
159             case 6:
160                 printf("请输入您需要删除第几个元素:\n");
161                 scanf("%d",&i);
162                 delElem(L , i);
163                 break;
164             case 7:
165                 dispList(L);
166                 break;
167             case 8:
168                 printf("退出成功!");
169                 exit(0);
170                 break;
171             default:
172                 printf("输入错误!\n");
173         }    
174         system("pause");//暂停 
175         printf("\n");
176         system("cls");//清屏 
177     }
178 }

猜你喜欢

转载自www.cnblogs.com/sucker/p/10646321.html