2.顺序存储线性表的描述 冷C语言中静态分配描述p22 >求长度 Status List length( SqList L length= L length return OK
➢求长度 Status List length( SqList L ) { length= L. length; return OK; } 2.顺序存储线性表的描述 ❖ C语言中静态分配描述 p22
2.顺序存储线性表的描述 冷C语言中静态分配描述p22 初始化 Status InitList_ Sqlist( Sqlist L) L elem=(* int)malloc(LIST_MAX_LENGTH 大 sizeof(int)) if (L elem) exit(Overflow length=O return OK
➢ 初始化 Status InitList_ SqList( SqList L ) { L.elem=(*int) malloc(LIST_MAX_LENGTH *sizeof(int) ); if(!L.elem) exit(Overflow) ; L. length=0; return OK; } 2.顺序存储线性表的描述 ❖ C语言中静态分配描述 p22
2.顺序表的描述 1)C语言中动态分配描述p22 #define LIST INIT SIZE 100 #define LIS TINCREMENT 10 typedef struct i Elem Type *elem nt length nt listsize JSlIst Sqlist L; 说明:elem数组指针指向线性表的基地址; length指示线 性表的当前长度; listsize指示顺序表当前分配的存储空间 大小。当空间不足时,再分配的存储空间增量为 LISTINCREMENT*sizeof(Elem Type)
2. 顺序表的描述 1) C语言中动态分配描述 p22 #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef struct { ElemType *elem; int length; int listsize; }SqList; SqList L; ◼ 说明:elem数组指针指向线性表的基地址;length指示线 性表的当前长度;listsize指示顺序表当前分配的存储空间 大小。当空间不足时,再分配的存储空间增量为 LISTINCREMENT*sizeof(ElemType)
2)几个基本操作 ①初始化 p23算法23 Status InitList_ SqList(SqList &L) lem=(Elem Type *)malloc(LIST_INIT_SI sizeof (Elem Type)) if (l elem)exit(OVERFLOW) L length=0 L listsize= LIST INIT SIZE return OK
2) 几个基本操作 ①初始化 ◼ p23算法2.3 Status InitList_SqList(SqList &L) { L.elem=(ElemType*)malloc(LIST_INIT_SI ZE *sizeof(ElemType)); if (!L.elem) exit(OVERFLOW); L.length = 0; L.listsize = LIST_INIT_SIZE; return OK; }
②插入p24算法24 Status ListInsert- sq(sqList &L, int i, Elem Type e if(<1 l i>L length+1) return ERROR if c llength >=L listsize) i newbase=(Elem Type*realloc(Lelem ( L listsize+LIS TINCREMENT)*sizeof(Elem Type)); if (lelem)exit(OVERFLOW L, elem newbase L listsize+=LISTINCREMENT ■需将第r(即 L, length)至第个元素向后移动一个位置 注意:C语言中薮组下标从0开始,则表中第个数据 元素是 Lelem[ⅰ-1]
②插入 p24算法2.4 Status ListInsert_sq(SqList &L,int i,ElemType e) { if (i<1 || i>L.length+1) return ERROR; if (L.length >= L.listsize) { newbase=(ElemType*)realloc(L.elem, (L.listsize+LISTINCREMENT)*sizeof(ElemType)); if (!L.elem) exit(OVERFLOW); L.elem = newbase; L.listsize+=LISTINCREMENT; } ◼ 需将第n(即L.length)至第i个元素向后移动一个位置。 注意:C语言中数组下标从0开始,则表中第i个数据 元素是L.elem[i-1]