分析: 兩個人賽跑,如果a速度是b的2倍,那麼,當a到達終點的時候,b剛好到中間位置(這種思想很重要)
注:延伸:「刪除單鏈表的中間元素」,道理相同,只要找出,刪除該結點即可。
#include
#include
const int maxsize = 101;
using namespace std;
typedef struct listnodelistnode;
void findmidlist(listnode *l)
else
}coutwhile(p != null)
}int main()
r->next = null;
findmidlist(a);
//print(a);
return 0;
}
3,找出單鏈表的中間元素
問題 找出單鏈表的中間元素 思路 快慢指標。快指標每次走兩步,慢指標每次走1步。快指標走到頭時,慢指標所指即為中間結點。如果結點個數n為偶數,則中間結點為第n 2個結點。linktable.cpp 定義控制台應用程式的入口點。include stdafx.h include include usin...
查詢單鏈表中間元素
查詢單鏈表中間元素 include using namespace std struct linknode class linklist linklist void insertvalue int nvalue void reverse void reverse2 linknode findlast...
取得單鏈表中間元素
配套的單鏈表在另一篇部落格。核心問題就是下面的那個while判斷條件,和最下面的奇數鍊錶和偶數鍊錶的問題。然後是判斷單鏈表的元素個數是奇數還是偶數的問題,觀察 畫的表。當元素個數為奇數的時候,first停止時,second位置正好就是中間的位置,問題是元素個數為偶數的時候,first停止時,中間有兩...