單鏈表的逆轉

2021-06-03 12:28:57 字數 620 閱讀 2847

鍊錶逆轉是面試環境中經常遇到的一道題目,也是我們在實際開發中可能會遇到的開發需求。和線性逆轉不一樣,單向鍊錶的節點需要乙個乙個進行處理。為了顯示兩者之間的區別,我們分別對線性記憶體和鍊錶進行逆**

(1)普通連續記憶體資料的反轉分析

status normal_revert(int array, int length)

memmove(array, pdata, length * sizeof(int));//將ptemp陣列的元素內容拷貝回原array

free(pdata);

return true;

}

我們看到連續記憶體反轉函式主要做了下面幾個工作:

1)分配和原來資料一樣大的記憶體

2)從原來資料末尾開始拷貝 

3)利用pdata獲取的資料對原來的資料進行拷貝覆蓋,釋放記憶體

(2)鍊錶資料的反轉

//鍊錶逆轉

node* linklistreserve(linknode head)

return p;

}

逆轉單鏈表

逆轉單鏈表 struct node reverse llist node head 此時temp表示以前的尾結點,p表示temp結點的前一結點 head temp 逆轉尾結點為頭結點 head next p 頭結點指標域指向p return head 逆轉迴圈鍊錶 struct node rever...

單鏈表逆轉

單鏈表逆轉 單鏈表逆轉,將單鏈表中各結點的next域改為指向其前驅結點。原先第乙個結點的next域為空,head改為指向原先的最後乙個結點。逆轉剛才如下圖所示 鍊錶類singlylist public class singlylist 構造單鏈表,由values陣列提供元素 public singl...

單鏈表逆轉

資料結構與演算法題目集 中文 list reverse list l 其中list結構定義如下 typedef struct node ptrtonode struct node typedef ptrtonode list 定義單鏈表型別 l是給定單鏈表,函式reverse要返回被逆轉後的鍊錶。i...