偶然間想起了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 資料成員...