最近c語言輔導過程中,發現有很多同學對於有關c語言鍊錶的問題一直不是很清楚,而在最近部分臨畢業學員應聘測試工作中又遇到單鏈表的問題而且反應不是很熟練這塊的內容。今天就談談有關但單鏈表的基本用法。鍊錶
1。是由結構體和指標構成的。
2。包括兩個部分乙個是資料域和指標域。
3。鍊錶中的結點分為兩類:頭結點和一般結點。頭結點是沒有資料域的。
4。基本操作有:初始化鍊錶,增加結點和刪除結點,求鍊錶的長度等等。
struct linknode;
這個地方有個知識點:這個是鍊錶的資料結構是有結構體和指標構成。結構體名為linknode.但這裡面沒有定義結構體變數,只有我們定義了結構體變數才能使用結構體。
結構體變數怎麼定義呢?
有兩種方式:
1。struct linknode linklist;
2.typedef struct linknode linklist.
一般我們都希望採用第2種,這樣的好處是: 當我們再定義結構體變數時,可以用:linklist p;而如果我們採用第一種還必須採用 struct linknode p;對比一下就可以知道第2種要簡單很多。那麼下面我們都採用第2種方式來定義結構體變數。
上面我們已經定義了乙個鍊錶:
1。初始化鍊錶。
#include
#include
int initlinklist(linklist **lnode)
在初始化鍊錶的時候,我們用到了2級指標為什麼呢?因為我們希望在initlinklist函式生成的頭結點,主函式中也能指向這個頭結點。如果我們用一級指標的話,用malloc分配空間的時候,它將會返回分配空間的首位址給指標變數lnode,而不能使是的空間被主函式中指標變數l得到這個位址。所以我們要用2級指標。
void main()
2。增加鍊錶結點
增加鍊錶結點其實很簡單,一般用到三個結構體指標變數和乙個迴圈結構。
insertlinklist(linklist *lnode)
while(9);//迴圈退出的條件是輸入的資料-9999 }
void main()
3。求鍊錶的長度:
int lengthlinklist(linklist *lnode)
return i;
}void main()
4.刪除結點
刪除鍊錶結點其實很簡單,一般用到三個結構體指標變數和乙個迴圈結構。
destroylinklist(linklist *lnode)
} void main()
單鏈表這塊內容只要你掌握好了基本的知識點,一切問題都ok了,這基本的知識點有:結構體變數,結構體指標變數,頭結點和一般結點,資料域和指標域,while迴圈。
c語言鍊錶詳解
鍊錶是一種常見的基礎資料結構,結構體指標在這裡得到了充分的利用。鍊錶可以動態的進行儲存分配,也就是說,鍊錶是乙個功能極為強大的陣列,他可以在節點中定義多種資料型別,還可以根據需要隨意增添,刪除,插入節點。鍊錶都有乙個頭指標,一般以head來表示,存放的是乙個位址。鍊錶中的節點分為兩類,頭結點和一般節...
c語言鍊錶詳解
鍊錶是一種常見的基礎資料結構,結構體指標在這裡得到了充分的利用。鍊錶可以動態的進行儲存分配,也就是說,鍊錶是乙個功能極為強大的陣列,他可以在節點中定義多種資料型別,還可以根據需要隨意增添,刪除,插入節點。鍊錶都有乙個頭指標,一般以head來表示,存放的是乙個位址。鍊錶中的節點分為兩類,頭結點和一般節...
c語言鍊錶詳解
參考 c語言程式設計 蘇小紅 p388 397 鍊錶是一種常見的基礎資料結構,結構體指標在這裡得到了充分的利用。鍊錶可以動態的進行儲存分配,也就是說,鍊錶是乙個功能極為強大的陣列,他可以在節點中定義多種資料型別,還可以根據需要隨意增添,刪除,插入節點。鍊錶都有乙個頭指標,一般以head來表示,存放的...