如何將單鏈表反轉?
/**
* description: definition for singly-linked list.
* *@author: crane-yuan
*@date: 2016-9-17 下午12:11:13
*/public
class
listnode
}
/**
* * description: 單鏈表反轉.
* *@param head
*@return listnode
*/public
static listnode reverselist(listnode head)
listnode prev = null ;
listnode current = head;
listnode next = null ;
while (current != null )
head = prev;
return head;
}
如何 將單鏈表在指定區間內進行反轉?
這個問題是上面問題的乙個變形,難度也加大了不少,主要的難點之處就在於對邊界條件的檢查。
實現思路,主要就是按照給定的區間得到需要整體反轉的乙個子鍊錶然後進行反轉,最後就是把鍊錶按正確的順序拼接在一起。
/**
* * description: 單鏈表反轉,反轉制定區間內的節點.
* *@param head
*@param m
*@param n
*@return listnode
*/public
static listnode reversebetween(listnode head, int m, int n)
/*** 將鍊錶按[m,n]區間分成三段.
** first,second,third分別為每一段的頭節點(注意,m=1也就是first與second相等的情況的處理)
* first --> firsttail
* second
* third
*/listnode first = head;
listnode firsttail = first;
listnode second = first;
listnode third = first;
listnode current = first;
int i = 0;
while (current != null )
if (i == m)
if (i == n)
current = current. next ;
}// 進行中間second段的reverse
current = second;
listnode prev = third;
listnode next = null ;
while (current != third)
if (m == 1) else
return first;
}
單鏈表反轉問題
今天聊乙個關於單鏈表反轉的問題,已知乙個單鏈表,給出頭結點,現要求定義乙個函式,輸入頭結點然後輸出反轉後的鍊錶。鍊錶反轉前 1 2 3 4 5 6 7 8 9 鍊錶反轉後 1 2 3 4 5 6 7 8 9首先我一看到這個問題,想到的是利用乙個陣列,將單鏈表按順序遍歷並把每個節點的值依次存放到陣列中...
單鏈表操作 單鏈表反轉問題?
單鏈表 typedef struct nodelnode 關於但鍊錶的操作很多 增刪改查,逆序,子交並補等,以及一些經典的變式 考研題目中,有很多好的演算法值得學習。下面是c語言實現的,採用乙個method,乙個test method,方便逐個學習,這個需要不斷的積累,最好用敲幾遍,再在紙上多寫寫,...
單鏈表反轉
單鏈表反轉,可以用迴圈做,當然也可以遞迴 詳見 include includestruct node 3 1 4 6 2 1 1 3 4 6 2 2 4 1 3 6 2 3 6 4 1 3 2 4 2 6 4 1 3 5 迴圈反轉,即依次改動3個指標值,直到鍊錶反轉完成 比如,上面第 1 行到第 2...