單鏈表的整表建立

2021-07-14 06:42:01 字數 1160 閱讀 8746

單鏈表整表建立的演算法思路:

1、宣告一節點p和計數變數i;

2、初始化一空鍊錶l;

3、讓l的頭節點的指標指向null,即建立乙個帶頭節點的單鏈表;

4、迴圈:

實現**演算法如下:   

/*   隨機產生n個元素的值,建立帶表頭節點的單鏈線性表l(頭插法)*/

void creatlisthead(linklist  *l,int  n)

}

這段演算法**裡,我們其實用的是插隊的辦法,就是始終讓新節點在第一的位置,我也可以吧這種演算法簡稱為頭插法,如下圖

可事實上,我們都是吧新節點放在最後,這才是排隊的正常思維,每次新節點都插在終端結點的後面,這種演算法稱之為尾插法。

二、單鏈表的建立(尾插法)

實現的**如下:

/*   隨機產生n個元素的值,建立帶表頭節點的單鏈線性表l(尾插法)*/

void creatlisthead(linklist  *l,int  n)

r->next=null;

}

注意l與r的關係,l是指整個單鏈表,而r是指向尾結點的變數,r會隨著迴圈不斷地變化結點,而l則是隨著迴圈增長為乙個多結點的鍊錶。

這裡需要解釋一下,r->next=p;的意思,其實就是將剛才的表尾終端結點r的指標指向新結點p,如下圖所示,當中1位置表示這個意思。

r->next=p;這一句話應該還好解釋,r=p的含義如下圖所示。

它的意思是r本在ai-1元素的結點,可現在它已經不是最後的結點了,現在最後的結點是ai,所以應該讓p結點這個最後的結點賦值給r。此時r又是最終的尾結點了。

迴圈結束後,那麼應該讓這個鍊錶的指標域置空,因此有了「r->next=null;」,以便以後遍歷時可以確認其是尾部。

單鏈表的整表建立

1 順序儲存結構的建立,其實就是乙個陣列的初始化,即宣告乙個固定型別和大小的陣列並賦值的過程。而單鏈表和順序儲存結構就不一樣,它不像順序儲存結構那麼幾種,它可以很散,是一種動態結構。對於每個鍊錶來說,它所占用空間的大小和位置是不需要預先分配劃定的,可以根據系統的情況和實際需求即時生成。所以建立單鏈表...

單鏈表整表建立和整表刪除

對於每個鍊錶來說,它所占用空間的大小和位置是不需要預先分配劃定的,可以根據系統的情況和實際的需求即使生成。所以建立單鏈表的過程就是乙個動態生成鍊錶的過程。即從 空表 的初始狀態開始,依次建立各元素結點,並逐個插入鍊錶。單鏈表整表建立的演算法思路 1 宣告一指標p和計數器變數i 2 初始化一空鍊錶l ...

單鏈表的整表建立和刪除 四

單鏈表的整表建立和刪除 一 單鏈表的整表建立 建立單鏈表的過程是乙個動態生成鍊錶的過程,從 空表 的初始狀態起,依次建立各元素結點並逐個插入鍊錶。單鏈表整表建立的演算法思路如下 1 宣告一結點p 2 初始化一空鍊錶l 3 建立乙個帶頭結點的單鏈表,即讓l的頭結點的指標指向null。4 迴圈實現後繼結...