typedef
int sldatatype;
//定義節點:資料+指標
typedef
struct listnode
listnode;
//鍊錶
typedef
struct list
list;
//建立節點
listnode*
creatlistnode
(sldatatype val)
;//節點初始化
void
initlist
(list* lst)
;//尾插o(n)
void
listnodepushback
(list* lst,sldatatype val)
;//尾刪o(n)
void
listnodepopback
(list* lst)
;//頭插o(1)
void
listnodepushfront
(list* lst, sldatatype val)
;//頭刪o(1)
void
listnodepopfront
(list* lst)
;//任意位置新增
void
listnodeinsertafter
(list* lst, sldatatype val)
;//任意位置刪除
void
listnodeeraseafter
(listnode* node)
;//查詢節點
listnode*
listfind
(list* lst, sldatatype val)
;//銷毀節點
void
listnodeerase
(listnode* node)
;//銷毀鍊錶
void
listdestroy
(list* node)
;//列印鍊錶
void
listprint
(list* lst)
;
#include
#include
#include
"list.h"
//建立節點
listnode*
creatlistnode
(sldatatype val)
//節點初始化
void
initlist
(list* lst)
}//尾插o(n)
void
listnodepushback
(list* lst,sldatatype val)
else
tail->_next =
creatlistnode
(val);}
}//尾刪o(n)
void
listnodepopback
(list* lst)
//釋放最後乙個空節點
free
(tail)
;//更新next
//只有乙個節點
if(prev ==
null
)else
}//頭插o(1)
void
listnodepushfront
(list* lst, sldatatype val)
//頭刪o(1)
void
listnodepopfront
(list* lst)
//任意位置新增 那個位置的值存在
void
listnodeinsertafter
(listnode* node, sldatatype val)
//任意位置刪除
void
listnodeeraseafter
(listnode* node)
//查詢節點
listnode*
listfind
(list* lst, sldatatype val)
cur = cur->_next;
}return
null;}
//銷毀鍊錶
void
listdestroy
(list* lst)
lst->_head =
null;}
//銷毀節點
void
listnodeerase
(listnode* node)
//列印鍊錶
void
listprint
(list* lst)
}void
test()
intmain()
鍊錶的實現
鍊錶是一種非常重要的資料結構,比起陣列來雖然操作繁瑣,查詢效率也不如陣列效率高,但在進行插入刪除操作時,鍊錶具有陣列無法比擬的效率,下面的 是鍊錶的實現 include include include define n 100 typedef struct node link link node i...
鍊錶的實現
include using namespace std template class linklist node head public linklist t a,int n 0 利用尾插法來構建線性鍊錶 linklist bool isempty 不為空,則返回0,為空則返回非0 t getnod...
鍊錶的實現
記憶體結構 鍊錶也是資料結構的一種,但是和陣列不一樣,陣列在記憶體中每個節點的位置是相連的。而鍊錶的每個節點在物件中是分散的,依靠引用相連。優點1 單鏈表在增加和刪除上要比陣列結構更加快捷。原因 因為順序表在記憶體中是相連的,所以刪除乙個節點,在該節點之後的節點都要隨之前移,所以效率不高。而單鏈表使...