鍊錶就地逆置

2021-06-23 02:52:15 字數 605 閱讀 4924

就地逆置,就是在不借助任何中間變數的情況下,逆置一單鏈表。

演算法思路:

逆置後的點鍊錶初始為空,表中的節點不是新生成的,而是從原鍊錶當中一次「刪除」,再逐個頭插到逆置表中。設逆置鍊錶的初始態為空表,「刪除」已知鍊錶中 的第乙個節點,然後將它「插入」到逆置鍊錶的「表頭」,即使得他成為逆置鍊錶中「新」的第乙個節點,如此迴圈,直至原煉表為空。

假設有如下資料結構:

#define elemtype char

typedef struct nodenode,*linklist;

如下圖所示:

**如下:

void reverselist(linklist l)

}

其實也比較簡單;就是有點繞。

同時給出頭插法建立鍊錶的**:

void creatlist(linklist l)

else

flag = 0;}}

單向迴圈鍊錶就地逆置

原來自己想過乙個思路,後來發現完全是不正確的。看來最後還是得在網上查詢演算法,最後才實現了。1 當鍊表為空表或只有乙個結點時,該鍊錶的逆置鍊錶與原表相同。2 當鍊表含2個以上結點時,可將該煉表處理成只含第一結點的帶頭結點鍊錶和乙個無頭結點的包含該鍊錶剩餘結點的鍊錶。然後,將該無頭結點鍊錶中的所有結點...

順序表的就地逆置

讀入乙個順序表,實現順序表的就地逆置。輸入 先輸入乙個小於100的正整數n,再從小到大的輸入n個正整數,建立乙個順序表,然後實現順序表的就地逆置。輸出 按順序輸出逆置後的順序表的所有元素,每個元素佔一行。輸入樣例 3 300 3000 50000 輸出樣例 50000 3000 300 includ...

順序表的就地逆置

6 1 順序表建立和就地逆置 10 分 本題要求實現順序表的建立和就地逆置操作函式。l是乙個順序表,函式listcreate sq sqlist l 用於建立乙個順序表,函式listreverse sq sqlist l 是在不引入輔助陣列的前提下將順序表中的元素進行逆置,如原順序表元素依次為1,2...