c 使用單向鍊錶儲存一組有序資料 鍊錶初相識

2021-10-14 06:50:33 字數 2150 閱讀 5343

我們知道陣列需要一塊連續的記憶體空間來儲存資料,而鍊錶恰恰相反,它並不需要連續的記憶體空間,它通過"指標"將零散的記憶體塊連線起來使用,通常將記憶體塊稱為鍊錶的「結點」.

單鏈表

既然是儲存資料,那就少不了插入和刪除操作,與陣列不同,鍊錶的插入和刪除不需要搬移資料,

插入

刪除

從圖中可以看出鍊錶的插入和刪除操作,只需要改變相鄰結點的指標就可以了,相比陣列而言,鍊錶不需要搬移資料,因為鍊錶中並非連續儲存資料,所以鍊錶無法像陣列一樣,支援隨機訪問.如果鍊錶要查詢某個資料需要從頭結點開始遍歷查詢,直到找到要查詢的資料.

迴圈鍊錶

迴圈鍊錶是一種特殊的單鏈表,尾結點的指標指向首結點的位址

雙向鍊錶

從圖中可以看出雙向鍊錶需要額外的空間來儲存前結點的位址,與單鏈表相比,儲存同樣的資料雙向鍊錶要占用更多的空間,但卻的特點的條件下,使用雙向鍊錶要比使用單向鍊錶的效率要高些,畢竟吃的多不出力可不行(空間換時間),例如要在指定結點前插入乙個資料時,雙向鍊錶已經記錄了前乙個結點的位址,可以直接操作,而單向鍊錶需要重新查詢.

單鏈表反轉

public static node reverse(node list)     return pre;  }
鍊錶中環的檢測

public static boolean checkcircle(node list)     return false;  }
兩個有序鍊錶的合併

public listnode mergetwolists(listnode l1, listnode l2)             else            p = p.next;        }                if (l1 != null)         if (l2 != null)         return soldier.next;       }
刪除鍊錶倒數第n個結點

public static node deletelastkth(node list, int k)     if (fast == null) return list;    node slow = list;    node prev = null;    while (fast.next != null)     if (prev == null)  else     return list;  }
求鍊錶的中間結點

public static node findmiddlenode(node list)     return slow;  }  public static void printall(node list)     system.out.println();  }  public static node createnode(int value)   public static class node     public int getdata()   }
通過前面的內容,我們知道了,陣列和鍊錶是兩種截然不同的記憶體組織方式,正是因為記憶體儲存的區別,導致了他們的特性截然相反.

陣列 優點

缺點隨機訪問性強

插入和刪除效率低

查詢效率高

可能浪費記憶體

陣列大小固定,不能動態擴充套件

鍊錶優點

缺點插入刪除速度快

不能隨機查詢

內容利用率高

必須從第乙個開始遍歷,查詢效率低

大小沒有固定,擴充套件和靈活

輸入一組數,構建有序鍊錶 (C語言實現)

要求說明 輸入一組數,構建有序鍊錶。整體思路 用陣列儲存這組數,每次都去找最小值,把最小值構建結點並使用頭插法插入到單鏈表中。然後將該值刪掉 為簡便起見,把值弄成max 這裡使用的是類直接插入的排序方法。實現 include include define max 1000000 單鏈表結構體定義 t...

C語言 K個一組翻轉鍊錶

給出乙個鍊錶,每 k 個節點一組進行翻轉,並返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼將最後剩餘節點保持原有順序。示例 給定這個鍊錶 1 2 3 4 5 當 k 2 時,應當返回 2 1 4 3 5 當 k 3 時,應當返回 3 2 1 4 ...

Leetcode K個一組反轉鍊錶C 實現

給你乙個鍊錶,每 k 個節點一組進行翻轉,請你返回翻轉後的鍊錶。k 是乙個正整數,它的值小於或等於鍊錶的長度。如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序採用了棧來完成,遍歷整個鍊錶,並將結點逐個存入棧中,當棧中存放結點數量 k時,將棧中元素依次彈出,建立乙個新的鍊錶。值得注意...