python數據結構之-----單向鏈表

數據結構:就是數據對象中數據元素的關係。

線性表:一個序列中元素在序列裏的位置和順序,表示實際應用中的某種意義的數據信息,或者表示數據之間某種關係叫做線性表

根據線性表的實際存儲方式,分爲兩種實現模型:

1.順序表:將元素順序的存放在一塊連續的存儲區域,元素之間的順序關係由他們的存儲順序自然表示

     python的標準類型list是一種元素個數可變的線性表,可以加入和刪除元素,並在各種操作中維持已有的元素順序

2.鏈表:將元素通過鏈接構造起來的一些列存儲塊中

鏈表是一種常見的基礎數據結構,是一種線性表,但是不像順序表一樣連續存儲數據,而是在每一個節點裏存放下一個節點的位置信息

鏈表又分爲

單向鏈表:是最簡單的鏈表形式,每個節點包含兩個域,信息域(元素域),連接域,這個連接域指向鏈表中的下一個節點,最後一個節點的連接域指向一個空值

單向循環鏈表

雙向鏈表

今天我們來詳細解釋一下單向鏈表,以及單向鏈表的實現!

首先定義一個單向鏈表的節點的類

然後創建一個單鏈表的類

 

這樣兩個類都已經實現,接下來就是對單向鏈表的操作了!

以下所寫的功能都是在單鏈表類的下面進行操作的!

1.首先實現判斷鏈表是否爲空的功能

這個功能很簡單,當鏈表爲空的時候,直接返回即可

2.判斷鏈表的長度

首先創建一個鏈表對象,這個對象指向的是鏈表的頭節點

初始化一個count,開始while循環,每次count的數量加1,每次變換cur的值,一直到最後一個節點。進行返回

3.遍歷鏈表

與判斷單鏈表的方法類似,去除了count,添加了一個訪問的代碼

4.向鏈表頭部添加元素

思路,先創建一個節點對象,因爲鏈表中的每一個節點都有兩個域,一個存儲自己的信息item,還有一個存儲下一個節點的位置信息next。在上面的代碼定義節點類的時候都已經定義好了。我們只用將新定義的節點的連接域next指向原先的頭節點,將鏈表的頭指向新的節點,就是將新節點添加在鏈表的頭部

代碼如下:

5.在鏈表的尾部添加元素

和向鏈表頭部添加元素類似

思路:首先創建一個新節點;然後判斷鏈表是否爲空,如果爲空,直接將node作爲鏈表的頭部即可。如果不爲空,則一直循環到鏈表的最後一個節點,定義最後一個節點的指向即可。

代碼:

 

 

單鏈表還有還好幾個功能,如向指定位置添加元素,刪除元素,查找元素等,這個在下一遍中將會寫出來。

  • 謝謝大家支持!我只是一個剛剛起步的python菜鳥,請大家多多批評指正!

  • 多多交流,我們共同學習!