#include <stdlib.h> #define MAXSIZE 100 //线性表可能达到的最大长度 typedef struct { int last;//线性表最后一个元素在数组中的位置 int elem[MAXSIZE]; }SeqList; void InitList(SeqList *list); int FindList(const SeqList *list, int e); int GetValue(const SeqList *list, int n); int Insert(SeqList *list, int n, int e); int DelList(SeqList *list, int n); int main(int argc, char* argv[]) { int position; SeqList *list; list = (SeqList *)malloc(sizeof(SeqList *)); InitList(list); Insert(list, 1,5); Insert(list, 2,4); Insert(list, 3,7); Insert(list, 4,4); position = FindList(list,5); if (position != -1) { printf("找到元素5在线性表中的位置:%d\n",position); }else printf("没有找到!\n"); printf("%d\n", GetValue(list,1)); for(int i = 0;i<list->last; i++) printf("%d ",list->elem[i]); printf("\n"); DelList(list,1); for(int j = 0;j<list->last; j++) printf("%d ",list->elem[j]); printf("\n"); return 0; } void InitList(SeqList *list) { list->last = 0;//初始化一个线性表,0表示为空 } /*查找 *在线性表中查找与e相等的元素,返回其在数组中的位置,若找不到返回-1 */ int FindList(const SeqList *list, int e) { int i = 0; for (; i <= list->last; i++) { if(list->elem[i] == e) return i+1; } return -1; } /*返回线性表中第n个元素*/ int GetValue(const SeqList *list, int n) { if( (n<0) || (n > list->last+1)) return -1; return list->elem[n-1]; } /* *插入:在线性表指定位置n,插入元素e */ int Insert(SeqList *list, int n, int e) { int k ; if ((n<1)|| (n > list->last+2)) { printf("插入位置不合法!\n"); return -1; } if(list->last == MAXSIZE - 1) { printf("线性表已满,无法插入!\n"); return -1; } for (k = list->last; k >= n - 1 ; k--) list->elem[k+1] = list->elem[k]; list->elem[n-1] = e; list->last++; return 1; } /* *删除在线性表指定位置的元素 */ int DelList(SeqList *list, int n) { int k ; if ((n<1)|| (n > list->last+1)) { printf("删除位置不合法!\n"); return -1; } for (k = n; k < list->last+1; k++) list->elem[k-1] = list->elem[k]; list->last--; return 1; }