線性表的順序儲存的特點是,在邏輯關係上相鄰的兩個元素在物理位置上也是相鄰的,因此可以隨機訪問表中任一元素。但是,當經常做插入和刪除操作運算時,則需要移動大量的元素,而採用鏈式儲存結構就可以避免這些移動。
用c語言中的結構型別描述線性表的鏈式儲存結構如下:
typedef struct nodelistnode;
typedef listnode *linklist;
listnode *p;
linklist head;
一、單鏈表基本運算
1、建立單鏈表
1.1 頭插法建表
linklist createlistf()
return head;
}1.2 尾插法建表
linklist createlistr()
r->next = null;
return head;
}2、查詢運算
2.1 按節點序號查詢
listnode * getnodei(linklist head, int i)
if(j==i)
return p;
else
return null;
}2.2 按節點值查詢
listnode * locatenodek(linklist head, datatype k)
3、插入運算
void insertlist(linklist head,int i, datatype k)
if(p==null)
else
}4、刪除運算
datatype deletelist(linklist head, int i)
if(p==null)
else
}二、雙向鍊錶
雙向鍊錶重點關注刪除演算法,如下:
datatype dldelete(dlnode *p)
p->prior->next = p->next;
p->next->prior=p->prior;
free(p);
return x;
注:p指向當前節點
線性表的鏈式儲存
此方法雖然簡單,但是真寫起來太複雜了。線性表的鏈式儲存 include include struct lnode 線性表的初始化 void init l lnode l 線性表的後插建立 void create l1 lnode l n next null 線性表的後插建立 void create ...
線性表的鏈式儲存
引言 一 單鏈表 相較於順序儲存用連續的儲存單元儲存,單鏈表採用鏈式儲存結構,用一組位址任意的儲存單元儲存資料元素。特點 1 儲存單元可以是不連續的,即邏輯結構與物理結構可以不相同 2 元素用結點儲存,每個結點由元素值和下乙個元素的位址構成 3 單鏈表是由每個結點的指標域按照邏輯次序相互連線而成的。...
線性表的鏈式儲存
include include include typedef int elemtype typedef struct nodenode,nodeptr 鍊錶節點 typedef struct listlist,listptr 鍊錶,頭結點為0位置 listptr initlist 初始化鍊錶 vo...