資料結構--基本資料結構
1.基本資料型別區分如下:
2.線性表:
2.1順序表:
元素在記憶體之中,是連續順序儲存的,在記憶體中劃分的是一塊連續的區域
2.2連結串列:
在一塊記憶體中分散儲存,結點之間以指標連線(邏輯上成為一個整體,物理分散,邏輯整體)
2.2.1連結串列的類別
單鏈表:從頭結點開始,單向的連線起來的資料結構,每一個結點有兩個域(前面為資料域,後面為指標域指向下一個結點的地址)
單鏈表結點的刪除:將a1的指標域直接指向a3即可,a2直接釋放
單鏈表結點的插入:直接將P的指標域指向S,將S的指標域指向a3所在結點
具體如下:先將S和和a3所在結點連線(a3原來為P--next,將P--next賦值給S--next),再連線P和S(將S膚質給P--next)。
話描述起來有點繞,就是如果P先連線S,P--next的值就會變化。a3由P--next指向連線,a3的P--next 和 新的P--next不一致,就無法連線了,脫節了。
迴圈連結串列:和單鏈表非常相似,迴圈連結串列的最後一個結點的指標域,指向頭結點,形成了一個迴圈
雙鏈表:有兩個指標域,前面一個後面一個,從兩個方向將結點連線起來,形成了雙鏈表,可以朝兩個方向移動。靈活度優於單鏈表,但記憶體開支更大。
雙鏈表的刪除:直接刪除和單鏈表一樣
雙鏈表的插入:可以拆分為兩個單鏈表的插入(只是想象的),實際順序是 將插入結點先分別指向兩個後繼結點,再由兩個前結點指向新插入的結點
2.3順序表和連結串列的比較
2.4棧(先進後出)
棧只是一個邏輯概念僅此而已,棧既可以用順序儲存實現,也可以用鏈式儲存實現
先進先出:進一個出一個,但如果棧中資料已經固定,就只能先進後出了
2.5佇列(先進先出)
普通形式佇列,順序結構
迴圈佇列
head 頭指標 0
tail 尾指標 元素的下一個位置
當未記錄元素時,隊頭指標和隊尾指標針在同一位置,存入新元素時,尾指標後移
head = tail 佇列可能為空也可能為滿,避免這種情況混淆,犧牲一個空間,當tail在倒數第一個時為滿,tial+1=head 為判滿條件。
一定要注意 tail 是在最後一個實際元素之後的 tail是隊尾指標 沒有值