雙向鍊錶反轉

2021-07-28 09:05:13 字數 767 閱讀 3873

鍊錶節點定義:

struct listhao

;listhao* reverselist(listhao* first);

現要實現輸入乙個雙向煉表頭指標,反轉鍊錶,並返回反轉後的頭指標。鍊錶節點如下圖,關鍵**如下:

listhao* reverselist(listhao* head)

//assume that this list is not loop.

listhao *pnode = head, *ppre = nullptr;

while (pnode != nullptr)

return ppre;

}

測試**:

void main()

cout << "backward output:" << endl;

cout << list->element << endl;

while (list->prev != nullptr)

listhao* result = reverselist(list);

cout << "forward output after reverse:" << endl;

cout << result->element << endl;

while (result->next != nullptr)

system("pause");

}

雙向鍊錶 3 反轉雙向鍊錶

雙向鍊錶的反轉過程,可以參考下面的例圖。a 原始雙向鍊錶 b 反轉後的雙向鍊錶 下面是乙個用於反轉雙向鍊錶的簡單方法。所需要做的事情就是交換每個節點的前向指標和後向指標,然後調整鍊錶的頭指標和尾指標。include struct node 對鍊錶進行反轉 void reverse node head...

反轉單向和雙向鍊錶

package class 03 反轉單向和雙向鍊錶 題目 分別實現反轉單向鍊錶和反轉雙向鍊錶的函式。要求 如果鍊錶長度為n,時間複雜度要求為o n 額外空間 複雜度要求為o 1 public class code 07 reverselist public static node reversel...

反轉單向和雙向鍊錶

package practice 反轉單向和雙向鍊錶 題目 分別實現反轉單向鍊錶和反轉雙向鍊錶的函式 要求 如果鍊錶長度為n,時間複雜度要求為o n 額外空間複雜度要求為o 1 author colin.chen public class revisenode public static node ...