關於約瑟夫問題的資料結構練習,關於約瑟夫問題的資料結構練習

2021-08-09 10:13:40 字數 1747 閱讀 6353

1樓:匿名使用者

自己花時間寫的 我在vc下執行成功了 在tc下應該沒有問題#include

#include

typedef struct lpeoplepeo;

void joseph(int n,int m) //用迴圈連結串列實現

q=p;p=p->next;

i=0;j=1;

while(inext=p->next;

p=q->next;

printf("%4d",j%n);

i++;

}else

j++;

}printf("\n");

}void main()

我有用c++寫了一個joseph的答案你參考一下/*約瑟夫問題 email:[email protected] 2009.12.12*/

/*描述:約瑟夫問題是個有名的問題:n個人圍成一圈,從第一個開始報數,

第m個將被殺掉,最後剩下一個,其餘人都將被殺掉。例如n=6,m=5,被殺掉的人的序號為5,4,6,2,3。最後剩下1號。*/#include

using namespace std;

typedef struct josephnode*jsnode;

class joseph

;joseph::joseph(int n)*/head->next=head;

head->num=1;

//前插法建立連結串列

for(int i=n;i>=2;i--)}void joseph::kill(int n,int m)else

}coutn>>m ;

joseph js(n);

js.kill(n,m);}

2樓:匿名使用者

前面兩位都用連結串列,用連結串列解決約瑟夫問題是最好的。我這裡補充用陣列來解決約瑟夫問題的問題,希望能對你有幫助(我這裡沒用檔案操作命令,只用普通的讀寫語句)

pascal

var n,m,s,f,t:integer;

a:array[1..100] of boolean;

begin

readln(n,m);

for t:=1 to n do

a[t]:=false;

f:=0; t:=0; s:=0;

repeat

t:=t+1;

if t=n+1 then t:=1;

if a[t]=false then s:=s+1;

if s=m then

begin

s:=0;

writeln(t,' ');

a[t]:=true;

f:=f+1;

end;

until f=n;

end.

3樓:黯然銷魂馬

#include"stdio.h"

main()

listnode,*linklist;

linklist creatlist(int n,linklist r)

p->data=n;p->next=r;r=p;return r;

}linklist deletenode(int n,int k,linklist r)

r=p;return r;

}void outring(int n,linklist r)void main()

love 黃靜雯,為我所愛的人答的。自己稍微改一下就行了

資料結構練習題及答案,資料結構練習題!求答案!

內容來自使用者 技術員童鞋 第1章緒論 一 判斷題 1.資料的邏輯結構與資料元素本身的內容和形式無關。2.一個資料結構是由一個邏輯結構和這個邏輯結構上的一個基本運算集構成的整體。3.資料元素是資料的最小單位。4.資料的邏輯結構和資料的儲存結構是相同的。5.程式和演算法原則上沒有區別,所以在討論資料結...

C語言新手關於資料結構的問題

1全部 include include define list init size 100 define listincrement 10 typedef struct sqlist void initlist sq sqlist l void main 在你的程式上改了一下,這是我習慣的 格式,建...

資料結構關於棧top指標位置問題

1 空棧的時候top base 1,就是棧外了。2 入棧的時候先top 然後將元素push入棧,所以 非空棧中的棧頂指標始終在棧頂元素的下一個位置 是正確的,但更應該理解為將要入棧位置的前一個位置 目前的棧頂元素位置 3 棧空判斷top 1,這樣的判斷沒見過。有也應該是 top base 1 或者t...