typedef int Status; typedef int ElemType; typedef struct { ElemType *elem; int length; int listsize; }SqList;
在第i个元素之前插入元素e
Status ListInsert_Sq(SqList &L, int i, ElemType e) { ElemType *newbase; ElemType *p, *q; if(i < 1||i >L.length + 1) return ERROR;//i不合法 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]); for(p = &(L.elem[L.length - 1]); p >= q; --p) *(p+1) = *p; *q = e;//第i个元素为e ++L.length; printf("%d ", L.length); return OK; } Status ListTraverse(SqList L, Status (*Visit)(ElemType)) { int i; for(i = 1; i < L.length; i++) { Visit(L.elem[i-1]); } return OK; } Status Visit(ElemType e) {//当ElemType不为int时,不能用 printf("%d ", e); }
main()函数
#include#include"List.h" int main(int argc, char** argv) { SqList q; int i; InitList_Sq(q); for(i = 1; i < 10; i++) ListInsert_Sq(q, i, i); ListTraverse(q, Visit); return 0; }
线性表的顺序结构是一种随机存储结构,若某线性表常用的 *** 作是存取任意指定序号元素或在最后进行插入和删除元素运算,则应该采用顺序存储结构。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)