關於約瑟夫迴圈使用單鏈表的問題

2021-09-25 11:09:14 字數 1154 閱讀 7108

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