所謂“就地是指輔助空間復雜度為O(1)。 解法一:將頭結點摘下,然后從第一結點開始,依次前插入到頭結點的后面(頭插法),直到最后一個結點為止。 代碼如下 解法二: 通過若干操作將指針反轉達到逆置的目的。 假設pre、p和r指向3個相鄰的結點,如上圖 ...
因為只能順序訪問,所以不能用兩個指針一個一個的顛倒。 想的新思路是:從第二個結點開始,從鏈表上拆下來,往頭結點后面插入。 注意:因為每一次都把第二個元素拆下來,所以指針不用后移,每次都是拆那個位置。 ...
2019-09-18 16:45 0 427 推薦指數:
所謂“就地是指輔助空間復雜度為O(1)。 解法一:將頭結點摘下,然后從第一結點開始,依次前插入到頭結點的后面(頭插法),直到最后一個結點為止。 代碼如下 解法二: 通過若干操作將指針反轉達到逆置的目的。 假設pre、p和r指向3個相鄰的結點,如上圖 ...
本題要求編寫函數實現帶頭結點的單鏈線性表的就地逆置操作函數。L是一個帶頭結點的單鏈表,函數ListReverse_L(LinkList &L)要求在不新開辟節點的前提下將單鏈表中的元素進行逆置,如原單鏈表元素依次為1,2,3,4,則逆置后為4,3,2,1。 函數接口定義 ...
void deleteLinkList(LinkList *&L){ LinkList *p=L->next,*s,*q; while(p!=N ...
解法2 ...
最近在看鏈表,今天刷到一道鏈表的反轉題,鏈表反轉可以說是基礎操作,但是可提供的方案也有很多,簡單通過了該題后又學習了一下遞歸反轉,現在把三種方法都公開出來做一個總結。 1.就地逆置 2.單參數的遞歸逆置 3.雙參數的遞歸逆置 一、就地逆置 方法:頭插。 由於這里是不帶表頭結點的單向鏈表 ...
代碼: 實驗截圖: ...
方法一:就地逆序 方法二:插入法 方法三:原地遞歸反轉 ...
轉自:http://blog.csdn.net/xlf13872135090/article/details/8857632 Node *head; //聲明頭結點 帶頭結點初始化 void InitList(Node **head ...