标签:
SeqList.h
1 #define ListSize 100 2 3 typedef int DataType; 4 typedef struct { 5 DataType list[ListSize]; 6 int length; 7 }SeqList; 8 9 void InitList(SeqList *L) 10 /* 将线性表初始化为空的线性表只需要把线性表的长度length置为0 */ 11 { 12 L->length=0; 13 } 14 15 int ListEmpty(SeqList L) 16 /* 判断线性表是否为空,为空返回1,否则返回0 */ 17 { 18 return !L.length; 19 } 20 21 int ListLength(SeqList L) 22 /* 返回线性表的长度 */ 23 { 24 return L.length; 25 } 26 27 void DestroyList(SeqList *L) 28 { 29 L->length=0; 30 } 31 32 33 int GetElem(SeqList L, int i, DataType *e) 34 /* 查找线性表中第i个元素。查找成功将该值返回给e,并返回1表示成功;否则返回-1表示失败。 */ 35 { 36 if(i<1 || i>L.length) 37 return -1; 38 39 *e=L.list[i-1]; 40 return 1; 41 } 42 43 int LocateElem(SeqList L, DataType e) 44 /* 查找线性表中元素值为e的元素,查找成功将对应元素的序号返回,否则返回0表示失败。 */ 45 { 46 int i; 47 48 for(i=0; i<L.length; i++) 49 if(L.list[i] == e) 50 return i+1; 51 52 return 0; 53 } 54 55 int InsertList(SeqList *L, int i, DataType e) 56 /* 在顺序表的第i个位置插入元素e,插入成功返回1,如果插入位置不合法返回-1,顺序表满返回0 */ 57 { 58 int j; 59 60 if(i<1 || i>L->length) { 61 printf("插入位置i不合法!\n"); 62 return -1; 63 } else if(L->length == ListSize) { 64 printf("顺序表已满,不能插入元素。\n"); 65 return 0; 66 } else { 67 for(j=L->length; j>=i; j--) 68 L->list[j]=L->list[j-1]; 69 70 L->list[i-1]=e; 71 L->length++; 72 73 return 1; 74 } 75 } 76 77 int DeleteList(SeqList *L, int i, DataType *e) 78 /* 将顺序表的第i个位置的元素值返回给e,并删除该元素,删除成功返回1,如果删除位置不合法返回-1,顺序表空返回0 */ 79 { 80 int j; 81 82 if(L->length == 0) { 83 printf("顺序表已空不能进行删除!\n"); 84 return 0; 85 } else if(i<1 || i>L->length) { 86 printf("删除位置不合适!\n"); 87 return -1; 88 } else { 89 *e=L->list[i-1]; 90 91 for(j=i; j<L->length; j++) 92 L->list[j-1]=L->list[j]; 93 94 L->length--; 95 96 return 1; 97 } 98 }
标签:
原文地址:http://www.cnblogs.com/ilinunix/p/4200960.html