雙向鍊錶實現約瑟夫環

2021-07-29 19:53:32 字數 1100 閱讀 1692

c語言版

/*author: super___yang*/

/*date: 2017-03-30*/

#include#includetypedef struct node //定義鍊錶節點型別

linklist;

int main()

else

}temp=head;

total=n; //記錄當前人數

front=head;

while(total!=1) //鍊錶中只剩乙個人時停止

while(front->next!=temp) //找到報數為m的人的前乙個人

printf("%d\n",temp->data); //輸出報數為m的人的編號

front->next=temp->next; //連線報數為m的人的前後兩人

free(temp); //刪除報數為m的人

total--; //總人數減一

temp=front->next;

} printf("%d\n",front->data); //輸出最後一人

return 0;

}

c++版

/*super___yang*/

/*2017-03-31*/

#include#includeusing namespace std;

typedef struct node node;

node* createlist(int n)

p->next=head; //尾指標指向頭指標構成迴圈

return head;

}void deletem(node*l,int m)

cout<<"第"<<++t<<"個出局的學生編號是"next; //m之前的學生直接指向m之後的學生即刪除m

p=p->next; //讓p指向下乙個便於判斷迴圈是否停止

}cout<<"最後乙個出局的學生編號是"n>>m)

return 0;

}

C 雙向迴圈鍊錶實現約瑟夫環

c 雙向鍊錶實現約瑟夫環 約瑟夫環問題描述 已知num個小孩 以編號1,2,3 num分別表示 圍坐在一張圓桌周圍。從編號為k的人開始從1順次報數,數到t的那個人出列 他的下乙個人又從1開始報數,後面順次數到t的那個人又出列 依此規律重複下去,直到圓桌周圍的人全部出列,試計算最後出列的那個小孩的編號...

鍊錶實現約瑟夫環

約瑟夫環 約瑟夫問題 是乙個數學的應用問題 已知n個人 以編號1,2,3.n分別表示 圍坐在一張圓桌周圍。從編號為k的人開始報數,數到m的那個人出列 他的下乙個人又從1開始報數,數到m的那個人又出列 依 此規律重複下去,直到圓桌周圍的人全部出列。實現 include using namespace ...

迴圈鍊錶實現約瑟夫環

約瑟夫問題 有n個人圍坐一圈,從第k個人開始數,數到m的那個人出隊。知道最後乙個人出隊。有11個人,從第2個人開始數,數到3的那個人出隊。如下簡圖 這裡有兩個關鍵 1 建立迴圈佇列 不能有頭結點 2 隔m 1步取出該節點 程式如下 include using namespace std typede...