#include
//#include//分配長度為num_bytes位元組的記憶體塊,如果分配成功則返回指向被分配記憶體的指標,否則返回空指標null。
//當記憶體不再使用時,應使用free()函式將記憶體塊釋放。
using namespace std;
typedef struct node
listnode,*linklist; /*
linklist l;
l=malloc(sizeof(linklist));
是指申請乙個鍊錶的頭結點的空間,並使該鍊錶的指標指向該結點。
因為理論上說鍊錶空間可以無限,即整個記憶體的空間都可以為其所用,
所以無需提前指定鍊錶空間大小也可以繼續申請下乙個結點的空間。
listnode*p;
p=malloc(sizeof(lnode));
與上句不同,這句是指你申請乙個結點的空間。lnode*p;是先定義乙個結點。
p=malloc(sizeof(lnode));是指為該結點申請記憶體空間.
*/// 注意乙個結點和乙個鍊錶的區別就可以了。
linklist found(int n); //建立乙個n個人員的單鏈表
void remove(linklist &head,int n,int m,int k); //剔除人員並輸出最後剩餘的一位人員
int main()
*/ //測試鍊錶head是否建立
remove(head,n,m,k); //呼叫函式剔除人員並輸出最後剩餘的一位人員
return 0; }
linklist found(int n)
r->next=head; //單鏈表迴圈
return head; }
void remove(linklist &head,int n,int m,int k)
while(p->next!=p)
cout<<"剔除第"data<<" "next; //報數為m的人剔除
delete q; //釋放q,q指向的結點被刪除
//free(q);
p=p->next; //p指向下乙個結點,重新開始報數
q=p->next; }
cout 一 實驗目的和要求 一 問題描述 設有n個人圍坐在圓桌周圍,現從某個位置m 1 m n 上的人開始報數,報數到k的人就站出來。下乙個人,即原來的第k 1個位置上的人,又從1開始報數,再報數到k的人站出來。依次重複下去,直到全部的人都站出來為止。試設計乙個程式求出這n個人的出列順序。二 問題分析 這是... 一堆猴子都有編號,編號是1,2,3 m,這群猴子 m個 按照1 m的順序圍坐一圈,從第1開始數,每數到第n個,該猴子就要離開此圈,這樣依次下來,直到圈中只剩下最後乙隻猴子,則該猴子為大王。本題實現 輸出出佇列的順序的編號1.節點類package yosepfu program 3.鍊錶的相關操作 d... m prear 是指向單鏈表的尾部的指標。m prear m next 是指向頭指標。函式ysf就是對約瑟夫問題的求解方法函式。includeusing namespace std include stdlib.h define n 13 template class node node typen...約瑟夫問題實驗 迴圈單鏈表
迴圈單鏈表實現約瑟夫問題
約瑟夫問題 迴圈單鏈表解法