總結 逆置雙向鍊錶的三種方法

2021-07-12 04:01:23 字數 1330 閱讀 9337

雙向鍊錶的遍歷要比單向鍊錶方便很多,所以逆置方法要比單鏈表豐富很多,因為可以從後向前遍歷,所以可以像逆置陣列一樣進行操作,也可以根據單鏈表的特性進行逆置,也可以用雙鏈表獨有的特性進行逆置。具體方法如下:

鍊錶的類定義如下:

typedef int datatype;

class dsnode

private:

dsnode*_prev;

dsnode*_next;

datatype _data;

};class dnslist

~dnslist()

dnslist(const dnslist &l) }

dnslist operator = (dnslist l) }

public:

// 頭插/頭刪/尾插/尾刪

void pushback(const datatype& x);

void popback();

void pushfront(const datatype& x);

void popfront();

// 插入/查詢/刪除

void insert(dsnode* pos, const datatype& x);

dsnode* find(const datatype& x);

void erase(const datatype& x);

//void reverse();//同一空間複雜度不需要返回值

dnslist* reverse();//不同空間複雜度通過鍊錶指標返回

// 列印

void print();

private:

void _clear() }

dsnode *_head;

dsnode *_tail;

};

在單一空間複雜度下:

1.通過頭尾指標向中間遍歷,交換所儲存的內容。

void dnslist::reverse()

}

2.單純通過頭指標向後遍歷,交換每個節點的前驅與後繼。

void dnslist::reverse()

}

在多重空間複雜度下:

建立新的雙向鍊錶指標,將目標鍊錶從前向後遍歷/從後向前遍歷,把每個節點的元素進行頭插/尾插。

dnslist* dnslist::reverse()

return newlist;

}

如有不足或錯誤,希望批評指正。

本文出自 「pawnsir的it之路」 部落格,請務必保留此出處

鍊錶逆置 三種方法詳解

achievek 本題要求實現乙個函式,將給定的單鏈表逆轉。函式介面定義 list reverse list l 其中list結構定義如下 typedef struct node ptrtonode struct node typedef ptrtonode list 定義單鏈表型別 l是給定單鏈表...

python程式設計練習 三種方法實現鍊錶的逆序

鍊錶的儲存特點 可以用任意一組儲存單元來儲存單鏈表中的資料元素,而且除了儲存每個資料元素外,還必須儲存 指示其直接後繼元素的資訊 實現鍊錶的逆序 方法1 就地逆序 在遍歷鍊錶的時候,修改當前結點指標域的指向,讓其指向它的前驅結點。需要用乙個指標變數來儲存前驅結點的位址,此外為了在調整當前結點指標域的...

鍊錶建立的三種方法

作為最常用的資料結構之一,鍊錶被廣泛應用在各個方面,下至作業系統底層的驅動程式上至各種應用軟體,都處處可以看到鍊錶的身影,皆因其操作的簡便與應用的高效性。總結個人目前所學,鍊錶的建立方式主要有 以下幾種方法 方法一 struct link node struct link node list nul...