有15個人圍成一圈,順序從1到15編號。從第乙個人開始報數,凡報到n的人退出圈子。用c語言寫出程式,輸入n(n>1)的值,輸出最後留在圈子裡的人的編號。
void main( )
構建鍊錶 l
把1-15這15個數逐個插入到 l 的尾部
輸入nwhile(鍊錶 l 中元素多於乙個)
for(i=1;i取 l第乙個元素 放到l的尾部;
刪除l第乙個元素
輸出l第乙個元素
刪除 l第乙個元素
輸出l第乙個元素,就是剩餘的那乙個
#include#includeusing namespace std;
void print(list&l)
list::iterator it;
for(it=l.begin();it!=l.end();it++)
coutint i,n;
for(i=1;i<16;i++)
//cin>>n;
n=3;
while(l.size()>1)
list::iterator it;
for(it=l.begin();it!=l.end();it++)
coutint i,n;
for(i=1;i<16;i++)
//cin>>n;
n=3;
while(l.size()>1)
{ int x;
if(n%l.size()==0)
x=l.size();
else
x=n%l.size();
for(i=1;i還可以優化:即,把前n-1個資料構成的鍊錶整體摘下來,插入到表尾。
這時候,用list模板就不行了,其成員函式沒有現成的。
這也是我們為什麼要學習基本原理的原因,沒有的時候,你有能力創造。
雙端鍊錶的頭插尾插頭刪尾刪
雙端鍊錶的定義我在這裡就不贅述了。直接上圖講 雙端鍊錶的插入,無論是頭插還是尾插,都要記住大話資料結構中的一張圖,強調順序的。這裡的順序比較容易記住,就是自己寫 的時候可能會比較迷糊,我是這樣記得,箭頭從起點到終點的方向為等式的左邊,箭頭的終點為等式的右邊,拿 舉例子,箭頭的方向為node prev...
約瑟夫環(鍊錶法,公式法)
約瑟夫環作為乙個數學問題,它的 實現方式有很多,比如迴圈鍊錶,公式解決或者動態規劃,之前參考資料也有用遞迴解決的。anyway,這些都是解決約瑟夫環問題很有效的方法。這裡總結兩種方法,迴圈鍊錶法和公式法。首先是迴圈鍊錶法,它的原理很簡單,也很容易理解。求解過程和人思考解決的過程很接近。設總人數為n,...
鍊錶操作 頭插法尾插法
單鏈表的插入操作,包括頭插和尾插,兩種的時間複雜度都為o n 單鏈表插入操作 頭插 尾插 include include using namespace std 定義結點資料型別 typedef int elemtype 結點定義 typedef struct lnode lnode,linklis...