回 帖 发 新 帖 刷新版面

主题:[讨论]一道关于单链环的题目,谁来帮找错

题目是围绕着山顶有10个洞,一只兔子和一只狐狸各住一个洞,狐狸总想吃掉兔子。一天兔子对狐狸说,你想吃我有一个条件,你先把洞编号1到10。你从第10号洞出发,先到第1号洞找我,第二次隔一个洞找我,第三次隔两个洞找我,以后依次类推,次数不限。若能找到我,你就可以饱餐一顿,在没找到我之前不能停止。狐狸一想只有10个洞,寻找的次数又不限,哪有找不到的道理,就答应了条件。结果就是没找着。 
 利用单链环编程,假定狐狸找了1000次,兔子躲在哪个洞里才安全。  
  
type pointer=^code;
     code=record
      key:integer;b:boolean;next:pointer;
     end;
var m,i:integer;head,p:pointer;
  procedure zhao(n:integer);
  var t:integer;
  begin
    t:=2;head^.b:=false;
    while t<n do
     begin for i:=1 to t do p:=head^.next;p^.b:=false;t:=t+1;end;
  end;
begin
  writeln('input ci shu:');readln(m);new(head);p:=head;
  for i:=1 to 10 do
    begin p^.key:=i;p^.b:=true;if i<>10 then p:=p^.next else head:=p^.next;
    end;
  zhao(m);p:=head;
  for i:=1 to 10 do
     begin if p^.b=true then writeln(p^.key);end;
readln;end.

回复列表 (共7个回复)

沙发

不懂

板凳

其实用数组编也可以
var i,j,l,s:longint;  a:array [1..10] of longint;
procedure search(l:longint);
 begin
        if s>10 then if s mod 10=0 then s:=s div 10
                                   else s:=s mod 10;
        if l=1000 then exit
                  else begin
                        a[s]:=0 ;
                        s:=s+l+1
                       end;
   search(l+1);
 end;
begin
 s:=2;
 for i:=1 to 10 do a[i]:=1;
 search(1);
 for i:=1 to 10 do if a[i]=1 then write(i,' ');
end.

3 楼

错误比较多,看看我的把,更你写的结构差不多的
type
  code=^ll;
  ll=record
       b:boolean;
       next:code;
       key:integer;{not nessary}
     end;
var
  p,q,head:code;
  i,j,k,l:integer;
begin
  new(head);p:=head;p^.b:=false;p^.key:=1;
  for i:=2 to 10 do
    begin
      new(q);
      q^.b:=true;
      p^.next:=q;
      p:=q;
      p^.key:=i;
    end;
  p^.next:=head;
  for i:=1 to 1000 do
    begin
      for j:=1 to i+1 do
        p:=p^.next;
      p^.b:=false;
    end;
  p:=q;
  for i:=1 to 10 do
    begin
      p:=p^.next;
      if p^.b then writeln(i);
    end;
end.

4 楼

我知道用数组可以写的简单些,但是我在捉摸指针呢,想用指针来实现

5 楼


贺天行宝:感谢你给我这个程序,给我一些启发,但是该程序运行的结果有错误:3,6,8。正确的结果是:2,4,7,9

6 楼

。。。。。。
你把题目说清楚,是隔几个还是从这里数起来第几个

7 楼


这个问题我已经写明白了,谢谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册