解释以下这个程序(pascal)

来源:百度知道 编辑:UC知道 时间:2024/05/08 17:57:29
type point=^node;
node=record
data:integer;
next:point;
end;
var m,n,s:integer;
p,q,head:point;
begin
readln(n,m);
new(head);
q:=head;
head^.data:=1;
for s:=2 to n do
begin
new(p);
p^.data:=s;
q^.next:=p;
q:=p;
end;
q^.next:=head;
s:=1;
q:=head;
repeat
p:=q^.next;
inc(s);
if s mod m=0
then begin
q^.next:=p^.next;
write(p^.data:6);
dispose(p);
end
else q:=p;
until p^.next=p;
write(p^.data:6);
end.

很简单的一段程序 定义了一个记录体 node 内容是DATA和NEXT
里面是数据和下一个链表的指针 整个程序就是个单链表
就是叫用户输入数据 然后生成节点 next指向下一个节点的地址

应该是约瑟夫环(约瑟夫问题) 的另一种解法
http://zhidao.baidu.com/question/41460270.html