我認爲線性鏈表的創建主要需要以下幾種:
1.需要一個結構體:有兩部分組成,一部分用來表示節點的各個屬性,另一部分是指針,用來指向下一個節點,只有這樣才能構成線性;
2.定義一個頭指針(head):用來保存鏈表的首地址,有了首地址就可以找到其他節點;
3.分別定義一個動態指針 p 和 q :主要用在鏈表創建 時期,p用來指向新創建的節點,q 用來指向上一個節點,通過q和p的連接來使鏈表連接;
下面是代碼實現:
int <stdio.h>
struct lianbiao
{
int shuxing; //這裏是鏈表的屬性區,當然可以有多個;
lianbiao *next; //這裏就是鏈表連接的關鍵了,它就好比火車每個車廂之間連接的部分
}*head=NULL, *p, *q;
int main()
{
int i;
int n;
scanf("%d",&n);
for(i=1;i<=n;i++) //這裏主要控制創建的鏈表的長度,長度爲 n
{
p=new(struct lianbiao); //這裏申請一個空節點
p.shuxing = i ; //我就把它的創建順序當做它的屬性了
p.next = NULL ; // 我習慣在創建一個節點的同時先把它屬性什麼的填完整,當然之後也可以
if(head == NULL) //這裏就是判斷申請的是不是第一個節點,第一個節點需要與 head 連接
head = p;
else q.next = p; //這裏就是鏈表連接的關鍵了
q = p; // q 是跟着 p 走的
}
}
好了,到這裏鏈表就已經創建好了
這裏創建的鏈表功能比較少,只能一些簡單的操作,功能的多少主要看節點的屬性的多少,當然結構體內的指針變量越多功能也就越多,這裏只有一個
指向下一個節點的指針,你也可以添加一個指向上一個節點的指針 ( lianbiao *last ),這樣就構成了雙向鏈表,雙向鏈表的靈活性更加強。