SqList
typedef struct
{
ElemType *elem; //存储空间基址
int length; //当前长度
int listsize; //当前容量
}SqList ;
L->elem = (ElemType*)mallloc(LIST_INIT_SIZE*sizeof(ElemType));L->length = 0;L->listsize = LIST_INIT_SIZE;
L->elem = (ElemType*)realloc(L->elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
if(NULL == L->elem) exit(OVERFLOW);
销毁操作 free(L->elem); L->elem = NULL;L->length = L->listsize = 0;
顺序表,顺序存储,初始化操作为顺序表分配一个预定义大小的数组空间;因插入元素导致空间不足可进行再分配(realloc);
LinkListt
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList ;
L = (LinkList)malloc(sizeof(LNode));L->next = NULL;
销毁Destroy p = L;L = L->next;free(p); 清空Clear 只保留头结点;
链表,创建结点与释放结点,结点带数据与指针两个信息;
综:考虑插入、删除操作是否合理,否则exit(ERROR);考虑存储分配是否成功(SqList),否则exit(OVERFLOW);