1 #include <stdio.h> 2 #include <stdlib.h> 3 #define MaxSize 100 4 /* 5 6 7 struct SqList sq; 8 struct SqList* p_sq = &sq; 9 p_sq->length = 0; 10 11 struct SqList sq; 12 struct SqList* p_sq = &sq; 13 p_sq = malloc(sizeof(struct SqList)); 14 p_sq->length = 0; 15 16 17 第一段代码 p_sq 指向 sq,因此 p_sq->length 就是 sq.length; 18 第二段代码 p_sq 指向一个新分配的内存,p_sq->length 不是 sq.length,sq.length 没有被初始化或赋值。 19 20 */ 21 typedef int Elemtype; 22 typedef struct SqList 23 { 24 Elemtype data[MaxSize]; 25 int length; //顺序表的长度 26 }; 27 void Init__List(struct SqList *sq);//初始化顺序表 28 int Length__List(struct SqList sq);//求顺序表的长度 29 Elemtype Get__List(struct SqList sq, int index);//获取第index个元素,index>0 30 int Locate__List(struct SqList sq, int value);//获取值为value的下标,下标>0 31 void Insert__List(struct SqList *sq, int index, int value);//插入第index位置,值为value,index>0 32 void Delete__List(struct SqList *sq, int index);//删除第index个位置的值,index>0 33 void ShowSqList(struct SqList sq);//展示顺序表 34 int main(void) 35 { 36 37 struct SqList sq; 38 Init__List(&sq); 39 printf("线性表的长度是%d\n", sq.length); 40 for (int i = 1; i <= 101; i++) 41 { 42 Insert__List(&sq, i, i * 1000); 43 } 44 ShowSqList(sq); 45 // printf("-------------------------\n"); 46 // Delete__List(&sq,1); 47 // ShowSqList(sq); 48 // printf("-------------------------\n"); 49 // Delete__List(&sq,10); 50 // ShowSqList(sq); 51 52 // printf("顺序表的长度是:%d\n",Length__List(sq)); 53 // printf("-------------------------\n"); 54 // for(int i=0;i<sq.length;i++){ 55 // printf("第%d个元素是%d\n",i+1,sq.data[i]); 56 // } 57 system("pause"); 58 return 0; 59 } 60 61 void Init__List(struct SqList *sq) 62 { 63 //sq = (struct SqList *)malloc(sizeof(struct SqList)); 64 sq->length = 0; 65 } 66 67 //求顺序表的长度 68 int Length__List(struct SqList sq) 69 { 70 71 return sq.length; 72 } 73 /* 74 返回线性表L中的第i个元素的值或地址 75 */ 76 Elemtype Get__List(struct SqList sq, int index) 77 { 78 if (index <= 0 || index > sq.length) 79 { 80 return -1; //-1表示不存在 81 } 82 83 return sq.data[index - 1]; 84 } 85 86 int Locate__List(struct SqList sq, int value) 87 { 88 for (int i = 1; i <= sq.length; i++) 89 { 90 if (sq.data[i - 1] == value) 91 { 92 return i - 1; 93 } 94 } 95 96 return -1; 97 } 98 void Insert__List(struct SqList *sq, int index, int value) 99 { 100 if (index <= 0 || index > sq->length + 1) 101 { 102 printf("插入的位置错误\n"); 103 return; 104 } 105 106 if (sq->length == MaxSize) 107 { 108 printf("空间已满\n"); 109 return; 110 } 111 for (int i = sq->length - 1; i >= index - 1; i--) 112 { 113 sq->data[i + 1] = sq->data[i]; 114 } 115 sq->data[index - 1] = value; 116 sq->length++; 117 } 118 119 void Delete__List(struct SqList *sq, int index) 120 { 121 if (index <= 0 || index > sq->length) 122 { 123 printf("删除的位置错误\n"); 124 return; 125 } 126 127 for (int i = index - 1; i < sq->length; i++) 128 { 129 sq->data[i] = sq->data[i + 1]; 130 } 131 132 sq->length--; 133 } 134 135 void ShowSqList(struct SqList sq) 136 { 137 for (int i = 0; i < sq.length; i++) 138 { 139 printf("%d\n", sq.data[i]); 140 } 141 }
原文:https://www.cnblogs.com/Knightl8/p/14872621.html