數據結構中線性表和鏈表的小結

線性表的順序表示:順序表
初始化的時候需要確定線性表的數組長度和線性表的長度
線性表的順序表示:
# define LIST_INIT_SIZE 100
#define LIST_INC_SIZE 20
typedef struct{
ElemType * elem;
int Listsize;
int length;
}SqList;

順序表的基本操作:
1、順序表的初始化操作:InitList(SqList &L, int msize=LIST_INIT_SIZE):分配空間。容量、元素數=0
2、順序表的銷燬操作:DestroyList(SqList &L)刪除元素、數組長度爲0,表長度爲0
3、檢查空、滿、和獲取長度:bool ListEmpty(SqList L) 獲取數組、列表長度
4、查找和獲取元素LocateItem_sq(SqList L,Elemtype e)依次查找元素
5、在位置i處插入元素:void ListInsert_sq(SqList &L,int i,Elemtype e)判斷位置是否已滿,再逐個後移元素
6、刪除元素:void ListDelete_sq(SqList &L, int i,Elemtye &e)
當順序表的長度無限長時,時間消耗是不容忽視的,因此順序表常常用於那些無需頻繁插入和刪除元素的應用

線性表的鏈式表示:單鏈表和循環列表
鏈表需要存儲數據本身外,還需要存儲一個指示直接後繼元素的信息——指針
節點中表示數據元素的域爲數據域p->data,指向後繼元素的域爲指針域p->next。
單鏈表:
typedef struct LNode{
ElemType data;
struct LNode * next;
}LNode,
單鏈表的操作:
1、初始化InitList(LinkList &L)只需要定義一個空指針
2、求鏈表的長度 ListLength_L(linkList L)
3、鏈表查找元素 LNode * LocateItem_L(LinkList L, ElemType e)
4、鏈表插入和刪除元素
除了單鏈表外,還有循環鏈表和雙向鏈表,雙向鏈表是在單向鏈表的基礎上加上一個反向鏈表
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章