任務:編號是1,2,…,n的n個人按照順時針方向圍坐一圈,每個人只有乙個密碼(正整數)。一開始任選乙個正整數作為報數上限值m,從第乙個仍開始順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他在順時針方向的下乙個人開始重新從1報數,如此下去,直到所有人全部出列為止。設計乙個程式來求出出列順序。
要求:利用單向迴圈鍊錶儲存結構模擬此過程,按照出列的順序輸出各個人的編號。
測試資料:m的初值為20,n=7 ,7個人的密碼依次為3,1,7,2,4,7,4,首先m=6,則正確的輸出是什麼?
要求:輸入資料:建立輸入處理輸入資料,輸入m的初值,n ,輸入每個人的密碼,建立單迴圈鍊錶。
輸出形式:建立乙個輸出函式,將正確的輸出序列
資料結構:typedef struct node
node, *linklist;
基本操作:初始化單鏈表;給每個人賦密碼;確定需要處理的人數;確定開始的上限值;得到正確的順序;輸出結果。輸出:
6 7輸出:3 1 7 2 4 7 4
6 7 4 1 5 3 2
#include
using
namespace std;
const
int n=
105;
typedef
struct node
node,
*linklist;
int info[n]
;linklist init_list_head()
//初始化鍊錶
linklist creat_list
(linklist l,
int n)
//建立鍊錶
p->next=l-
>next;
return l;
}void
joseph
(linklist l,
int m,
int n)
//實現約瑟夫環的處理
q=p-
>next;
m=q-
>password;
//將他的密碼作為新的m值
printf
("%d "
,q->data)
;//出隊操作
p->next=q-
>next;
free
(q);
cnt--;}
}int
main()
creat_list
(l,n)
;printf
("出列順序為:");
joseph
(l,m,n)
;return0;
}
資料結構課設
10 多種基本內排序方法的實現 問題描述 設計乙個合成的排序程式。可供排序的方法是 插入排序 快速排序 歸併排序 堆排序。要求程式具有 1 顯示排序結果.2 提供最好和最壞情況下對比計時的功能。3 提供在不同陣列元素的個數情況 當n分別等於100,1000,5000,20000時 下各種排序演算法的...
資料結構 線性結構 雙向鍊錶
雙向鍊錶 就是在單向鍊錶的基礎上加了乙個pre 指向該節點的前乙個節點 域,其他的沒有改變,在對鍊錶進行增刪相關操作時在單向鍊錶的基礎上多以乙個向前節點連線的動作即可。因為有了指向前乙個節點域,所以雙向在查詢資料上比單向的速度要快。1 2 雙向鍊錶3 4class doublelinkedlist ...
資料結構課設框架
標頭檔案上界 include include include include include include using namespace std define true 1 define false 0 標頭檔案下界 結構體上界 食物 typedef struct food food,ptr f...