如下圖為單鏈表示意圖:
只列出頭文件以及單鏈表相關函數(shù)實現(xiàn)代碼,均來源于書上,并整理出分析過程。
重要經(jīng)驗:當編寫涉及指針的數(shù)據(jù)結構或者算法時,最好先畫出結構圖分析過程,再進行寫代碼。(其實,除了涉及指針的要,很多數(shù)據(jù)結構、圖論等相關算法都先畫圖分析,清楚思路后才碼代碼較好)
以下為分析過程圖

雙向鏈表如下圖所示:
即在單鏈表的每一個節(jié)點Node結構體上,加多一個struct Node * 的指針指向上一個結構體
優(yōu)缺點
優(yōu)點:簡化刪除操作,因為有現(xiàn)成的指向前一個指針可以更改指向即可缺點:增大空間需求(代碼量),插入開銷增加一倍,有雙向指針要搞如下圖所示,即在單(雙)鏈表末端不接NULL,使其返回指向表頭。 如下圖為雙向循環(huán),同理也有單向循環(huán)。 
缺點:對于非稠密型多項式運算緩慢
2.多項式ADT(單鏈表實現(xiàn))(暫時不會。。。) 只有一部分聲明。。
// 鏈表實現(xiàn)直接不要系數(shù)為0的項,且按階數(shù)遞減排序typedef struct Node * PtrToNode;struct Node{ int Coefficient; int Power; PtrToNode Next;};typedef PtrToNode Polynomial;3.桶式排序&基數(shù)(卡式)排序
桶式排序思想:要求N個整數(shù)排序,且已知范圍為1-M。 步驟:4.注冊表 eg:要知道一個學校的每個班的注冊人以及每個學生對應注冊的班級 可以利用如下多重表 
有些編程語言,如Basic等沒有指針,此時就不能基于指針來寫鏈表了。此時引入新的ADT”游標”來代替指針,且此時要重寫關于malloc與free的游標形式的函數(shù)。
注意鏈表有以下特性:
因此,游標鏈表也應該具有以上特點。
// Cursor List// _Cursor_H.h#ifndef _Cursor_Htypedef int PtrToNode;typedef PtrToNode List;typedef PtrToNode Position;void InitializeCursorSpace(void);List MakeEmpty(List L);int Isempty(List L);int IsLast(Position P,List L);Position Find(ElementType X,List L);Position FindPrevious(ElementType X,List L);void Delete(ElementType X,List L);void Insert(ElementType X,List L,Position P);void DeleteList(List L);Position Header(List L);Position First(List L);Position Advance(Position P);ElementType Retrieve(Position P);#endif /*_Cursor_H*//* implementation file */#include '_Curvor_H.h'struct Node{ ElementType Element; Position Next; /* data */};struct CurvorSpace[ SpaceSize ]; /*SpaceSize為自定空間*//*相當于指針鏈表中的malloc*/static Position CurvorAlloc(void){ Position P; P=CurvorSpace[0].Next; CurvorSpace[0].Next=CurvorSpace[P].Next; return P;}/*相當于指針函數(shù) free*/static void CurvorFree(Position P){ CurvorSpace[P].Next=CurvorSpace[0].Next; CurvorSpace.Next=P;}/*剩下游標操作函數(shù)的實現(xiàn)和_List_Function.c里面的差不多List MakeEmpty(List L);int Isempty(List L);int IsLast(Position P,List L);Position Find(ElementType X,List L);Position FindPrevious(ElementType X,List L);void Delete(ElementType X,List L);void Insert(ElementType X,List L,Position P);void DeleteList(List L);Position Header(List L);Position First(List L);Position Advance(Position P);ElementType Retrieve(Position P);*/新聞熱點
疑難解答