首页 > 代码库 > 数据结构之线性表:顺序存储
数据结构之线性表:顺序存储
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 }
数据结构之线性表:顺序存储
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。