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...