C程式單鏈表面試題詳解

2021-04-13 12:27:22 字數 1504 閱讀 3088

測試空間旗下大頭針

出品

最近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程式單鏈表面試題詳解

測試空間旗下大頭針 出品 最近c語言輔導過程中,發現有很多同學對於有關c語言鍊錶的問題一直不是很清楚,而在最近部分臨畢業學員應聘測試工作中又遇到單鏈表的問題而且反應不是很熟練這塊的內容。今天就談談有關但單鏈表的基本用法。鍊錶1。是由結構體和指標構成的。2。包括兩個部分乙個是資料域和指標域。3。鍊錶中...

單鏈表 (面試題)

關於單鏈表的基本操作,之前已經總結過了,那些掌握之後算是了解了單鏈表是什麼?不過現在面試的題中,肯定不會只讓你回答單鏈表的基礎操作,總是會改變一些東西,或是擴充套件一下。下面就是一些關於單鏈表的擴充套件內容 include include include pragma warning disable...

單鏈表面試題

1.倒序列印鍊錶 void reverseprint slistnode pfirst 有兩種方法 1.遞迴操作 2.非遞迴操作 2 非遞迴 slistnode pend slistnode pcur pend null while pfirst pend pend pcur printf d pe...