主题:[讨论]有关指针
stuart920106
[专家分:730] 发布于 2005-07-31 23:18:00
[fly]指针[/fly]是面对对象的重要思想,在pascal中也处于重要地位,我希望各位各抒己见,谈谈指针的一些用法。在此多谢各位
回复列表 (共9个回复)
沙发
口口and枕头 [专家分:1550] 发布于 2005-07-31 23:22:00
呵呵没看书还不懂怎么用~~~~
板凳
HRQ [专家分:60] 发布于 2005-08-01 20:42:00
你是要问指针类型吗
4 楼
MagicG [专家分:650] 发布于 2005-08-02 20:41:00
恩,我虽然有听过1\2节关于指针的课,不过的确还是有些不明白,不过由于一年没接触编程了,所以加上有些遗忘,我希望大家能带来一些经典的应用,让偶好尽快记起先,谢`
谁能给个经典做法的用指针做个排序链的程序,不胜感激先~`
5 楼
stuart920106 [专家分:730] 发布于 2005-08-02 22:15:00
比如说,线性链表的遍历等等。
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 楼
xpycc [专家分:410] 发布于 2005-08-03 10:29:00
楼上的,标准的链表头指针是没有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 楼
MagicG [专家分:650] 发布于 2005-08-03 19:55:00
顶!谢了!
8 楼
闪电123 [专家分:470] 发布于 2005-08-05 11:56:00
用指针做的排序二叉树时间复杂度(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 楼
PHI [专家分:10] 发布于 2005-08-12 22:18:00
POINTER指针类型
含义:对象的地址
定义:“^”类型标示符 | 制定类型对象的地址
或 表示
“pointer”(仅限FP)。 | 任意对象的地址
本质特征:随叫随到
利用new过程开一个指示对象
dispose释放
赋值的含义:指向同一个对象
“@”符号:a:=@x 表示 a 指向 x 的地址
目标的引用:指针变量“^”
我来回复