-
Notifications
You must be signed in to change notification settings - Fork 0
/
FirstUnfinished.c
49 lines (42 loc) · 1.18 KB
/
FirstUnfinished.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <malloc.h>
#include <stdbool.h>
#include <math.h>
//定义DataType为int型
typedef int ElemType;
//定义线性表的最大长度
#define LIST_INT_SIZE 100
#define LISTINCREMENT 10
//定义线性表的结构体
typedef struct {
ElemType *elem;
int length;
int size;
} SeqList;
bool InitList(SeqList *L){
//构造一个空的线性表L
L->elem = (ElemType *)malloc(LIST_INT_SIZE *sizeof(ElemType));
if(! L->elem)
exit(OVERFLOW);
L->length = 0;
L->size = LIST_INT_SIZE ;
return 1;
}
bool ListInsert(SeqList *L, ElemType *newlist, int i, ElemType e, int *p, int *q){
//在线性表第i个位置之前插入新的元素e
//i的范围在1≤i小于等于List_Length_Sq(L)+1
if(i<1||i>L->length+1)
exit(OVERFLOW);
if(L->length>=LIST_INT_SIZE){
newlist = (ElemType *) realloc(L->elem, (LIST_INT_SIZE+LISTINCREMENT)*sizeof(ElemType));
if(!newlist)
exit(OVERFLOW);
L->elem = newlist; //新基址
L->size += LISTINCREMENT; //增容量
}
q = &L->elem[i-1];
for(p = &(L->elem[L->length-1]); p>=q; --p)
*(p+1) = *p;
*q = e;
++L->length;
return 1;
}