002、静态顺序表的插入与删除
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include "string.h" 4 5 #define MAXSIZE 100 //定义顺序表最多存储多少元素 6 //定义一个静态顺序表结构体 7 typedef struct 8 { 9 int staelem[MAXSIZE]; 10 int length; 11 }strlist; 12 //初始化 13 void staListInit(strlist* L) 14 { 15 int i; 16 memset(L->staelem,0,MAXSIZE); 17 L->length = 0; 18 for( i = 0;i < 10;i++) 19 { 20 L->staelem[i] = i; 21 } 22 L->length = i; 23 } 24 //循环打印 25 void printLis(strlist* L) 26 { 27 int i; 28 for(i = 0;i < L->length ;i++) 29 { 30 printf("L->staelem[%d] = %d\n",i,L->staelem[i]); 31 } 32 printf("L->length = %d\n",L->length); 33 } 34 35 /* 36 * 插入数据 37 * L 静态顺序表结构体 38 * n 插入位置的下标 39 * data 插入的数据 40 */ 41 int inserList(strlist* L,int n,int data) 42 { 43 int i; 44 if(L->length >= MAXSIZE || n > L->length ||n < 0 ) 45 { 46 printf("Array insertion error!\n"); 47 return 0; 48 } 49 for(i = L->length-1;i >= n;i--) 50 { 51 L->staelem[i+1] = L->staelem[i]; 52 } 53 L->staelem[n] = data; 54 L->length += 1; 55 return 1; 56 } 57 /* 58 * 删除数据 59 * L 静态顺序表结构体 60 * n 删除位置的下标 61 */ 62 int deleteList(strlist* L,int n) 63 { 64 int i; 65 if(n < 0 || n > L->length) 66 { 67 printf("Array delete error!\n"); 68 return 0; 69 } 70 for(i = n;i < L->length-1;i++) 71 { 72 L->staelem[i] = L->staelem[i+1]; 73 } 74 L->length -= 1; 75 return 1; 76 77 } 78 int main() 79 { 80 int err; 81 strlist List1; 82 /* 初始化 */ 83 staListInit(&List1); 84 /* 打印数据 */ 85 printLis(&List1); 86 87 /* 插入数据 */ 88 err = inserList(&List1,5,20); 89 /* 打印数据 */ 90 if(err) 91 printLis(&List1); 92 93 /* 删除 */ 94 err = deleteList(&List1,5); 95 /* 打印数据 */ 96 if(err) 97 printLis(&List1); 98 99 return 0; 100 }