1.單鏈表反轉
單向鍊錶的反轉是乙個經常被問到的乙個面試題,也是乙個非常基礎的問題。比如乙個鍊錶是這樣的: 1->2->3->4->5 通過反轉後成為5->4->3->2->1。最容易想到的方法遍歷一遍鍊錶,利用乙個輔助指標,儲存遍歷過程中當前指標指向的下乙個元素,然後將當前節點元素的指標反轉後,利用已經儲存的指標往後面繼續遍歷。源**如下:
1struct linka ;56
void reverse(linka*& head)
7 20 head->next = null;
21 head = pre;
22 }
還有一種利用遞迴的方法。這種方法的基本思想是在反轉當前節點之前先呼叫遞迴函式反轉後續節點。源**如下。不過這個方法有乙個缺點,就是在反轉後的最後乙個結點會形成乙個環,所以必須將函式的返回的節點的next域置為null。因為要改變head指標,所以我用了引用。演算法的源**如下:
1 linka* reverse(linka* p,linka*& head)2 8else
9
14 }
常見資料結構
陣列 array 在程式設計中,為了處理方便,把具有相同型別的若干變數按有序的形式組織起來。這些按序排列的同類資料元素的集合稱為陣列。在c語言中,陣列屬於構造資料型別。乙個陣列可以分解為多個陣列元素,這些陣列元素可以是基本資料型別或是構造型別。因此按陣列元素的型別不同,陣列又可分為數值陣列 字元陣列...
常見資料結構對比
最近看一本講程式設計藝術的書,裡面提了個問題 常見資料結構有哪些?以前都是用到什麼資料結構,去查相應資料,一直沒仔細想過這個問題,一時心血來潮,決定做個 總結下幾種資料結構的特點。如果哪位大神發現了錯誤,請通知小弟一聲,小弟馬上修改,謝謝。名稱 描述隨機訪問時間複雜度 特點優點 缺點陣列 資料型別的...
演算法常見資料結構
array 陣列最簡單而且應用最廣泛的資料結構之一.特性 使用連續的記憶體來儲存,陣列中的所有元素必須是相同的型別或型別的衍生 同質資料結構 元素可以通過下標直接訪問 linkedlist 鍊錶,線性表的一種,最基本,最簡單,也最為常用的資料結構.特性 元素之間的關係是一對一的關係 除了第乙個和最後...