C語言單向鍊錶的實現

2021-08-04 19:45:14 字數 1653 閱讀 9018

偶然間想起了n年前的乙個c語言的面試題目,現在做了乙個總結,完美解答。

乙個簡單結點的結構體表示為:

struct note ; 

乙個簡單的單向鍊錶的圖示

1.鍊錶是結構、指標相結合的-種應用,它是由頭、中間、尾多個鏈環組成的單方向可伸縮的鍊錶,鍊錶上的鏈環我們稱之為結點。 

2.每個結點的資料可用-個結構體表示,該結構體由兩部分成員組成:資料成員與結構指標變數成員。 

3.資料成員存放使用者所需資料,而結構指標變數成員則用來連線(指向)下-個結點,由於每-個結構指標變數成員都指向相同的結構體,所以該指標變數稱為結構指標變數。 

4.鍊錶的長度是動態的,當需要建立-個結點,就向系統申請動態分配-個儲存空間,如此不斷地有新結點產生,直到結構指標變數指向為空(null)。申請動態分配-個儲存空間的表示形式為:

(struct  note*)malloc(sizeof(struct  note))

鍊錶的建立

在鍊錶建立過程中,首先要建立第乙個結點,然後不斷地

在其尾部增加新結點,直到不需再有新結點,即尾指標指向

null為止。

設有結構指標變數   struct note *p,*p1,*head;

head:用來標誌煉表頭;

p:在鍊錶建立過程中,p總是不斷先接受系統動態分配的新結點位址。

p1->next:儲存新結點的位址。

鍊錶建立的步驟:

第一步:建立第乙個結點

struct   node ;

struct   note   *p,*p1,*head;

head=p1=p=(struct  node  *)malloc(sizeof(struct node);

第二步:

給第-個結點成員data賦值並產生第二個結點

scanf(「%d」,&p->data);  /*輸入10*/

p=(struct  node  *)malloc(sizeof(struct node);

第三步:將第-個結點與第二個結點連線起來

p1-> next=p;

第四步:產生第三個結點

p1=p;

scanf(「%d」,&p->data);/*輸入8*/

p=(struct  node  *)malloc(sizeof(struct node); 

以後步驟都是重複第

三、四步,直到給出-個結束條件,不再建新的結點時,要有 

p->next=null;它表示尾結點。 

**[cpp]view plain

copy

#include 

#include

#define  len  sizeof(struct node)

struct

node  

;  main()  

p-> next=null;/*尾結點的指標成員值*/

p=head;/*鍊錶顯示*/

printf("鍊錶資料成員是:"

);  

while

(p->next!=null)  

printf("%d\n"

,p->data);  

}  

C語言單向鍊錶實現

include include typedef struct node listnode typedef listnode linklist 帶頭節點的單鏈表 初始化單鏈表只有頭節點 void initlinklist linklist linklist 建立乙個單鏈表 linklist creat...

C語言單向鍊錶的實現

乙個簡單結點的結構體表示為 struct note int data 資料成員可以是多個不同型別的資料 struct note next 指標變數成員只能是 個 乙個簡單的單向鍊錶的圖示 1 鍊錶是結構 指標相結合的 種應用,它是由頭 中間 尾多個鏈環組成的單方向可伸縮的鍊錶,鍊錶上的鏈環我們稱之為...

C語言單向鍊錶的實現

乙個簡單結點的結構體表示為 struct note 乙個簡單的單向鍊錶的圖示 1 鍊錶是結構 指標相結合的 種應用,它是由頭 中間 尾多個鏈環組成的單方向可伸縮的鍊錶,鍊錶上的鏈環我們稱之為結點。2 每個結點的資料可用 個結構體表示,該結構體由兩部分成員組成 資料成員與結構指標變數成員。3 資料成員...