雙向鍊錶 3 反轉雙向鍊錶

2021-07-03 06:50:02 字數 1008 閱讀 9423

雙向鍊錶的反轉過程,可以參考下面的例圖。

(a) 原始雙向鍊錶

(b) 反轉後的雙向鍊錶

下面是乙個用於反轉雙向鍊錶的簡單方法。所需要做的事情就是交換每個節點的前向指標和後向指標,然後調整鍊錶的頭指標和尾指標。

#include struct node ;

//對鍊錶進行反轉

void reverse(node** head)

//總結:先處理前向指標,然後處理後向指標。這些操作都只對當前節點(current),不涉及其它節點。

//1.快取前向指標

//2.將後向指標賦值給前向指標

//3.將快取的前者指標,賦值給後向指標

//4.當前節點指標移動到下乙個待處理節點

//修改頭指標之前,先檢測鍊錶是否為空鍊錶,或者只有乙個節點的情況

if (temp != null)

*head = temp->prev;

}// 給定鍊錶的頭指標(head)以及乙個整數,插入乙個新的節點至鍊錶的頭部

// 之所以傳入雙指標,因為函式中需要修改鍊錶

void push(node** head, int newdata)

void printlist(node* head)

std::cout << std::endl;

}int main()

執行結果:

original dll is:

10  8  6  4  2  0

reversed dll is:

0  2  4  6  8  10

時間複雜度:o(n)

雙向鍊錶反轉

鍊錶節點定義 struct listhao listhao reverselist listhao first 現要實現輸入乙個雙向煉表頭指標,反轉鍊錶,並返回反轉後的頭指標。鍊錶節點如下圖,關鍵 如下 listhao reverselist listhao head assume that thi...

mysql 雙向鍊錶 雙向鍊錶

雙向鍊錶是鍊錶變型,相比於單鏈表導航或者是向前和向後的兩種方式。以下是重要的術語來理解雙向鍊錶的概念 link 鍊錶的每個鏈路儲存資料稱為乙個元素。linkedlist linkedlist包含連線鏈結到名為首先第乙個鏈結,並稱為最後的最後乙個鏈結 last 雙向鍊錶表示 按照如上圖中所示,以下是要...

雙向鍊錶(鍊錶)

雙向鍊錶 每個節點包含指向後繼節點的指標和指向前驅節點的指標。繼承關係圖 實體圖 duallinklist.h duallinklist 雙向鍊錶類模板 成員變數 node 節點實體 m header 頭節點 m length 鍊錶長度 m step 步進長度 m current 當前節點前乙個節點...