我来贴上我的 数据结构 作业,为了增加动力,请斑竹勿删(1分)

  • 主题发起人 主题发起人 Dale46
  • 开始时间 开始时间
D

Dale46

Unregistered / Unconfirmed
GUEST, unregistred user!
约瑟夫问题:
10个猴子,围成一圈,依次报数,从1到3, 1,2,3,1,2,3,1,2,3...
凡是数到3的就出列,
最后剩下的为大王.
静态链表的算法:
program statical_Monkey(input,output);
type component=record
data:integer;
cur:-1..10;
end;
var
a:array [1..10] of component;
i,p,k,b:integer;
deleted:boolean;
procedure DeleteLink(k:integer);
var
i,first,last:integer;
begin
for i:=1 to 10do
if a.cur=p then
first:=i;
last:=a[p].cur;
a[first].cur:=last;
a[p].cur:=-1;
p:=first;
end;

begin
for i:=1 to 10do
begin
a.data:=i;
a.cur:=i+1;
end;
a[10].cur:=1;
i:=1;
p:=1;
while a[p].cur<>pdo
begin
if i mod 3=0 then
begin
DeleteLink(p);
end;
k:=p;
p:=a[p].cur;
i:=i+1;
end;

write('The ');
write(a[k].data);
writeln(' (th) monkey will be the King');
end.

指针的算法
program Dynamic_Monkey(input,output);
type
pointer=^nodetype;
nodetype=record
data:integer;
link:pointer;
end;
var
i,p,k,b:integer;
head,next,last:pointer;
procedure typer(k:pointer);
var
i:integer;
k2:pointer;
begin
i:=0;
k2:=k;
while k^.link<>k2do
begin
writeln(k^.data);
k:=k^.link;
i:=i+1;
end;
end;

procedure DeleteLink(var k:pointer);
var
temp:pointer;
begin
temp:=k;
while temp^.link<>kdo
temp:=temp^.link;
temp^.link:=k^.link;
write(k^.data);
write(' ');
dispose(k);
k:=temp;
end;

begin
new(head);
head^.data:=1;
last:=head;
for i:=2 to 10do
begin
new(next);
next^.data:=i;
last^.link:=next;
last:=next;
end;
last^.link:=head;
i:=1;
last:=head;
while last^.link<>lastdo
begin
if i mod 3=0 then
deletelink(last);
last:=last^.link;
i:=i+1;
end;

write('The ');
write(last^.data);
writeln(' (th) monkey will be the King');
end.
 
有意思!
 
凡是学过数据结构的人我估计肯定都编过约瑟夫环的程序,而且都是要用c和pascal各编
一个(至少我们是这样),这可是数据结构的入门程序啊。
 
好好好???
 
数据结构好好学,有用!
 
hehe,我们还没学 数据结构 就做过这道题目了
现在正在上 C 的基础课,老师给口头出的作业
本来想用 链表 做的,但是老师说只能用已学
知识,就只好用 静态数组 了 :-(
虽然比较幼稚,不过好歹还是搞定了。
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
850
import
I
I
回复
0
查看
1K
import
I
后退
顶部