数据结构线性表应用_顺序表V1
线性表应用(顺序表) 学生信息管理 学生信息包括学号、姓名、年龄等 功能 插入学生信息 更新学生信息 删除学生信息 查找学生信息 输出所有学生信息 等 顺序表的 C 语言描述 typedef struct { } SqList; // 俗称 顺序表 #define LIST_INIT_SIZE 80 // 线性表存储空间的初始分配量 #define LISTINCREMENT 10 // 线性表存储空间的分配增量 ElemType *elem; // 存储空间基址 int length; // 当前长度 int listsize; // 当前分配的存储容量 // (以sizeof(ElemType)为单位) InitList( L ) DestroyList( L ) ListEmpty( L ) ListLength( L ) PriorElem( L, cur_e, pre_e ) NextElem( L, cur_e, next_e ) GetElem( L, i, e ) ListTraverse(L, visit( )) ClearList( L ) PutElem( L, i, e ) ListInsert( L, i, e ) ListDelete(L, i, e) LocateElem( L, e, compare( ) ) Status InitList_Sq( SqList L ) { // 构造一个空的线性表 } // InitList_Sq L.elem = (ElemType*) malloc (LIST_ INIT_SIZE?sizeof (ElemType)); if (!L.elem) exit(OVERFLOW); L.length = 0; L.listsize = LIST_INIT_SIZE return OK; Status ListInsert_Sq(SqList L, int i, ElemType e) { } // ListInsert_Sq if (L.length = L.listsize) { newbase = (ElemType *)realloc(L.elem, (L.listsize+LISTINCREMENT)*sizeof (ElemType)); if (!newbase) exit(OVERFLOW L.elem = newbase; // 新基址 L.listsize += LISTINCREMENT; // 增加存储容量 } q = (L.elem[i-1]); // q 指示插入位置 for (p = (L.elem[L.length-1]); p = q; --p) *(p+1) = *p; // 插入位置及之后的元素右移 *q = e; // 插入e ++L.length; // 表长增1 return OK; if (i 1 || i L.length+1) return ERROR; Status ListDelete_Sq (SqList L,int i, ElemType e){ } // ListDelete_Sq for (++p; p = q; ++p) *(p-1) = *p; // 被删除元素之后的元素左移 --L.length; // 表长减1 return OK; p = (L.elem[i-1]); // p 为被删除元素的位置 e = *p; // 被删除元素的值赋给 e q = L.elem+L.length-1; // 表尾元素的位置 if ((i 1) || (i L.length)) return ERROR; int LocateElem_Sq(SqList L, ElemType e, Status (*
原创力文档

文档评论(0)