文档详情

线性表的顺序存储结构自写代码.doc

发布:2017-12-18约4.34千字共6页下载文档
文本预览下载声明
#includestdio.h #includestdlib.h // 函ˉ数簓结á果?状痢?态?代洙?码? #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define NULL 0 #define INFEASIBLE -1 #define LIST_INIT_SIZE 100 // 线?性?表括?存?储洹?空?间?的?初?始?分?配?量? #define LISTINCREMENT 10 // 线?性?表括?存?储洹?空?间?的?分?配?增?量? #define OVERFLOW -2// 在úmath.h中D已?定¨义?OVERFLOW的?值μ为a,请?注痢?意癮 typedef int Status; // Status是?函ˉ数簓的?类え?型í,其?值μ是?函ˉ数簓结á果?状痢?态?代洙?码? typedef int ElemType; typedef struct { ElemType * elem; //存?储洹?空?间?基ù址· int length; //当獭?前°长¤度è int listsize; //当獭?前°分?配?的?存?储洹?容╕量? }SqList; static SqList L; //定¨义?全?局?变?量? static ElemType element; //------基ù本?函ˉ数簓的?原-型í说μ明÷------ Status InitList(SqList L); //构1造ì一?个?空?非?的?线?性?表括? Status DestroyList(SqList L); //销ú毁ù线?性?表括? Status ClearList(SqList L); //清?空?线?性?表括? Status ListEmpty(SqList L); //判D断?线?性?表括?是?否?为a空? int ListLength(SqList L); //返う?回?线?性?表括?中D的?元a素?的?个?数簓 Status GetElem(SqList L,int i); //用?e返う?回?线?性?表括?中D的?第台瞚个?数簓据Y元a素?的?值μ Status LocateElem(SqList L,ElemType e); //定¨位?及°查é找ò Status PriorElem(SqList L,ElemType cur_e,ElemType *pre_e); //返う?回?数簓据Y的?前°驱y Status NextElem(SqList L,ElemType cur_e,ElemType *next_e); //返う?回?数簓据Y的?后ó继ì Status ListInsert(SqList L,int i,ElemType e); //插?入?元a素? Status ListDelete(SqList L,int i,ElemType e); //删?除y元a素? Status ListTraverse(SqList L,int i,ElemType e); //对?线?性?表括?中D的?每?个?数簓据Y进?行D函ˉ数簓visit的?访?问ê //-?-?-?-?-?-?基ù本?算?法ぁ?的?操ù作痢?描è述?-?-?-?-?-?-? Status InitList(SqList L) { L.elem = (ElemType *)malloc(LIST_INIT_SIZE *sizeof(ElemType)); if (!L.elem == NULL) exit (OVERFLOW); L.length = 0; L.listsize = LIST_INIT_SIZE; return OK; } //InitList Status DestroyList(SqList L) { if (L.elem == NULL) return ERROR; else free(L.elem); return OK; } //DestroyList Status ClearList(SqList L) { if (L.elem == NULL) exit(ERROR); int i; ElemType *p_elem = L.elem; for (i = 0; i L.length; i++) { *L.elem = NULL; L.elem ++; } L.elem = p_elem; return OK; } //ClearList Sta
显示全部
相似文档