為什麼需要鍊錶:
順序表的構建需要預先知道資料大小來申請連續的儲存空間,而在進行擴充時又需要進行資料的搬遷,所以使用起來並不是很靈活。鍊錶結構可以充分利用計算機記憶體空間,實現靈活的記憶體動態管理。
而且當你儲存的資料需要的空間很大的時候,記憶體中很可能不存在一整塊連續的空間用來儲存資料。
鍊錶的定義
在乙個不連續的空間去儲存資料,我們首先面臨的問題就是如何是這些元素資料聯絡起來,不然無法每乙個元素的儲存位置。因此,我們在開闢一塊空間存放的不僅僅是資料,還有鏈結到下乙個資料的位址。單向鍊錶
單向鍊錶也叫單鏈表,是鍊錶中最簡單的一種形式,它的每個節點包含兩個域,乙個資訊域(元素域)和乙個鏈結域。這個鏈結指向鍊錶中的下乙個節點,而最後乙個節點的鏈結域則指向乙個空值。
因為,單鏈表是單向的,不能從反的推,所以,只要我們儲存頭結點,就是可以知道整個鍊錶。
python變數的本質
a = 100
b = 200
a,b = b,a
這三行python**表示a,b變數交換值。可能一開始大家都會理解成,a是存放100 的空間的別名,而b是存放200空間的別名。
這就會有個問題a,b = b,a是怎麼實現的,不應該有個中間變數c在交換的時候臨時儲存資料嗎(c=a,a=b,b=c)。
其實,在python中a=100準確來說並不是100賦值給a, a不是存放100空間的別名。準確來說,是a指向了100(指向存放100的空間區域)。
當 a=100,是開闢一塊空間存放100,然後在開闢一塊空間,這個空間的別名就是a,用來存放位址,這個位址就是存放100的地方。這就是為什麼python中的變數可以指向任何物件(不管有多大),因為他只存放位址,大小為4個位元組的整型。
所以a,b = b,a這種操作才可以實現,相當於a,b=200,100分別將a,b的指向換了。
資料結構之鍊錶筆記
專業術語 頭指標 指向頭結點的指標變數 尾指標 指向尾結點的指標變數 1.空鍊錶的建立pnode creatlist 2.完整的乙個鍊錶建立pnode creatlist return l 1.鍊錶的增加 1.插入到中間 在第 i 個元素之前插入乙個數 pnode insertlist pnode ...
資料結構單鏈表筆記 fjc整理
3.2 順序儲存 頻繁訪問 1.隨機訪問 o 1 2.插入i o n n i 1 平均 n 2 刪除 n i 平均 n 1 2 鏈式儲存 所有元素可以存放在位址不連續的地方 a1 a2 a2 a3 a3 a4 an null 鍊錶結束條件 a1放在 設定乙個頭指標存a1的位址。一般以頭指標名字命名單...
雙向鍊錶筆記
雙向鍊錶增刪,準備未來複習自己用 include using namespace std typedef struct node node 測試雙向鍊錶 void showlink node p puts 雙向鍊錶插入 void addnode node head,node tail 在中間新增 w...