回 帖 发 新 帖 刷新版面

主题:[讨论]有关指针

[fly]指针[/fly]是面对对象的重要思想,在pascal中也处于重要地位,我希望各位各抒己见,谈谈指针的一些用法。在此多谢各位

回复列表 (共9个回复)

沙发

呵呵没看书还不懂怎么用~~~~

板凳

你是要问指针类型吗

3 楼

不 是讨论

4 楼

恩,我虽然有听过1\2节关于指针的课,不过的确还是有些不明白,不过由于一年没接触编程了,所以加上有些遗忘,我希望大家能带来一些经典的应用,让偶好尽快记起先,谢`
谁能给个经典做法的用指针做个排序链的程序,不胜感激先~`

5 楼

比如说,线性链表的遍历等等。
type point=^node;
     node=record
          data:integer;
          next:point;
     end;
var  p,head:point;
begin
  p:=head
   while p<>nil do
begin
   write(p^.data:8);  p:=p^.data;
end;
end;

6 楼

楼上的,标准的链表头指针是没有data值的~~~~~~~~~~~
给你发一个创建和打印单向链表的过程,你自己慢慢研究吧~~~~~~~~~~

procedure list_create(var head:point);  {创建}
  begin
    new(head);
    writeln('Create');
    p:=head;
    read(x);
    while x<>0 do
    begin
      new(q);
      q^.data:=x;
      p^.next:=q;
      p:=q;
      read(x);
    end;
    p^.next:=nil;
  end;
procedure print(head:point);   {打印}
  begin
    writeln('print');
    p:=head;
    while p^.next<>nil do
    begin
      writeln(p^.next^.data);
      p:=p^.next;
    end;
  end;

7 楼

顶!谢了!

8 楼

用指针做的排序二叉树时间复杂度(nLOG^2):


Type tree=^node;
     node=Record
        data:Integer;
        lchild,rchild:tree;
     End;
Var bt:tree;
     n:Integer;

Procedure creat_order_tree(Var btx:tree;nx:Integer);
  Var p,s,f:tree;
      flag:Boolean;
  Begin
    New(s);
    s^.data:=nx;
    s^.lchild:=Nil;
    s^.rchild:=Nil;
    flag:=True;
    p:=btx;
    While (p<>Nil) And flag Do
      Begin
        f:=p;
        If s^.data=p^.data Then flag:=False
        else If s^.data<p^.data Then p:=p^.lchild
                                else p:=p^.rchild;
      End;
    If flag Then Begin
                   If btx=Nil Then btx:=s;
                   If s^.data<f^.data Then f^.lchild:=s;
                   If s^.data>f^.data Then f^.rchild:=s;
                 End;
  End;

Procedure inorder_print(btx:tree);
  Begin
    If btx<>Nil Then
       Begin
          inorder_print(btx^.lchild);
          Write(btx^.data,'  ');
          inorder_print(btx^.rchild);
       End;
  End;

Begin {main}
  bt:=Nil;
  Writeln('input data(if <0 then over!):');
  Repeat
    Read(n);
    If n>=0 Then creat_order_tree(bt,n);
  Until n<0;
  Write('output sorted data:');
  inorder_print(bt);
  Writeln;
  Readln;
End.

9 楼

POINTER指针类型
含义:对象的地址
定义:“^”类型标示符             |       制定类型对象的地址
           或                   表示
      “pointer”(仅限FP)。      |         任意对象的地址
本质特征:随叫随到
         利用new过程开一个指示对象
         dispose释放
赋值的含义:指向同一个对象
“@”符号:a:=@x 表示 a 指向 x 的地址
目标的引用:指针变量“^”

我来回复

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