1 #include<stdio.h> 2 #define Maxsize 10 3 typedef int ElemType; 4 typedef struct stu { 5 int length; 6 ElemType data[Maxsize]; 7 }SqList; 8 //初始化线性表,将顺序表L的length项置0。 9 void InitList(SqList &L) { 10 L.length = 0; 11 } 12 //输出顺序表中所有元素 13 void DisElem(SqList &L) { 14 int m = 0; 15 for (int i=0;i<L.length;i++) { 16 17 printf("%d ", L.data[i]); 18 m++; 19 if (m % 5 == 0) { 20 printf(" "); 21 } 22 } 23 } 24 //销毁线性表(函数不包括任何语句)。 25 void DestroyList(SqList L) { 26 //顺序表L的内存空间由系统自动分配 27 //在不再需要顺序表L时由系统自动释放空间 28 } 29 //获得第i个位置的值 30 int GetElem(SqList L) { 31 int i; 32 printf("请输入你想查的位置 "); 33 scanf("%d",&i); 34 if (L.length < 0 || i<1 || i>L.length) 35 { 36 return 0; 37 } 38 int e; 39 e = L.data[i - 1]; 40 return printf("该数为%d ",e); 41 } 42 //在顺序表中将元素插入位置为i的地方。 43 int ListInsert(SqList &L/*e为要插入的值*/) { 44 //如果顺序线性表满了 45 int i,n; 46 printf("请输入你想插入的位置 "); 47 scanf("%d",&i); 48 printf("请输入你想插入的值 "); 49 scanf("%d",&n); 50 if (L.length == Maxsize) { 51 return 0; 52 } 53 //当i不在范围内 54 if (i<1 || i>L.length + 1) { 55 return 0; 56 } 57 //若插入数据不在表尾 58 if (i <= L.length ) { 59 //数据后移 60 for (int k = L.length-1; k >= i-1; k--) { 61 L.data[k + 1] = L.data[k]; 62 } 63 } 64 L.data[i - 1] = n; 65 L.length++; 66 67 } 68 //按值查找 69 int Locate(SqList L, ElemType e /*e为要查找的值*/) { 70 int i = 0; 71 //查找范围是0~L.length-1 72 while (i < L.length || L.data[i] != e) { 73 i++; 74 if (i >= L.length) { 75 return 0; 76 } 77 else { 78 return printf("该值在第%d个元素上 ", i); 79 } 80 } 81 } 82 //删除位置为i的元素 83 int DleElem(SqList &L) { 84 int i; 85 printf("请输入你要删除的位置 "); 86 scanf("%d",&i); 87 if (i<1 || i>L.length) { 88 return printf("删除失败 你要删除的数不在范围内 "); 89 } 90 for (int k = i; k < L.length; k++) { 91 92 L.data[k-1] = L.data[k]; 93 } 94 L.length--; 95 return printf(" 删除成功 "); 96 } 97 //输入数据 98 void InputElem(SqList &L) { 99 int h; 100 printf("请输入你想输入的长度 "); 101 scanf("%d",&h); 102 L.length = h; 103 for (int i = 0; i < L.length; i++) { 104 printf("请输入第%d个数 ",i+1); 105 scanf("%d",&L.data[i]); 106 } 107 printf("输入成功 "); 108 } 109 //更改第i个位置的数据 110 int changeElem(SqList &L){ 111 int i,m; 112 printf("请输入你想更改的数的位置 "); 113 scanf("%d",&i); 114 if(i<1||i>L.length){ 115 return printf("你输入的位置不在范围内"); 116 } 117 printf("请输入你想改成的数 "); 118 scanf("%d",&m); 119 L.data[i-1]=m; 120 121 122 } 123 //主函数 124 int main() { 125 SqList L; 126 InitList(L);//初始化 127 while(true){ 128 printf("||||||||||||||||||||||||||||||||||||||||||||||| "); 129 printf("|| 1:输入顺序表 || "); 130 printf("|| 2:从指定位置删除一个数 || "); 131 printf("|| 3:查询指定位置的数 || "); 132 printf("|| 4:将元素插入指定位置 || "); 133 printf("|| 5:改变某位置元素 || "); 134 printf("|| 6:打印顺序表 || "); 135 printf("|| (输入-1退出系统) || "); 136 printf("||||||||||||||||||||||||||||||||||||||||||||||| "); 137 int n; 138 printf("请输入操作序号: "); 139 scanf("%d",&n); 140 switch(n){ 141 case 1 : 142 InputElem(L); 143 break; 144 case 2 : 145 DleElem(L); 146 break; 147 case 3 : 148 GetElem(L); 149 break; 150 case 4 : 151 ListInsert(L); 152 break; 153 case 5 : 154 changeElem(L); 155 break; 156 case 6 : 157 DisElem(L); 158 break; 159 case -1: 160 return 0; 161 162 } 163 174 175 } 176 }
做死我了。