type //定义指针变量
pReorder=^recordQQ;
recordQQ=record
Xuhao:integer;
next:pReorder;
end;
-------------------------
var
ReorderArray:array of pReorder;//定义指针数组链表
MaxEnter:integer;
-------------------------
procedure TForm1.QQspeakNum;
var
i:integer;
begin
setlength(ReorderArray,MaxEnter+1);
for i:= 0 to MaxEnter do //首先初始化指针数组链表;
begin
new(ReorderArray[i]);
ReorderArray[i]^.next:=nil;
end;
for i:=0 to QQcount -1 do //为指针数组链表赋值
begin
new(ReorderArray[i]^.next);
ReorderArray[i]:=ReorderArray[i]^.next;
ReorderArray[i]^.Xuhao:=i;
ReorderArray[i]^.next :=nil;
end;
end;
------------------------------
for i:= MaxEnter downto 0 do
begin
while ReorderArray[i].next <> nil do
begin
//这中间的语句竟然没有执行。 ?????????
end;
end;
------------------------------
for i:= 0 to MaxEnter do //FormDestroy中释放内存
begin
while ReorderArray[i]^.next <> nil do
begin
dispose(ReorderArray[i]);
ReorderArray[i]:=ReorderArray[i]^.next;
end;
end;不知道以上代码错在哪里?望高手指正,谢谢。
pReorder=^recordQQ;
recordQQ=record
Xuhao:integer;
next:pReorder;
end;
-------------------------
var
ReorderArray:array of pReorder;//定义指针数组链表
MaxEnter:integer;
-------------------------
procedure TForm1.QQspeakNum;
var
i:integer;
begin
setlength(ReorderArray,MaxEnter+1);
for i:= 0 to MaxEnter do //首先初始化指针数组链表;
begin
new(ReorderArray[i]);
ReorderArray[i]^.next:=nil;
end;
for i:=0 to QQcount -1 do //为指针数组链表赋值
begin
new(ReorderArray[i]^.next);
ReorderArray[i]:=ReorderArray[i]^.next;
ReorderArray[i]^.Xuhao:=i;
ReorderArray[i]^.next :=nil;
end;
end;
------------------------------
for i:= MaxEnter downto 0 do
begin
while ReorderArray[i].next <> nil do
begin
//这中间的语句竟然没有执行。 ?????????
end;
end;
------------------------------
for i:= 0 to MaxEnter do //FormDestroy中释放内存
begin
while ReorderArray[i]^.next <> nil do
begin
dispose(ReorderArray[i]);
ReorderArray[i]:=ReorderArray[i]^.next;
end;
end;不知道以上代码错在哪里?望高手指正,谢谢。
解决方案 »
- delphi7中怎么实现flashxp中实现本地目录浏览的功能急!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ADO怎么调用dbf表啊,急
- 高手指教——————飞机订票系统的问题
- 急求一个进销存的sql语句(按货品类别查询交易汇总)
- 小问题
- 两个TDBEdit字段的值相乘问题
- ehlib 的 DBGridEh 最后一行汇总栏如何出现,就是找不到,demo内找了很久
- 文本框问题!!
- delphi像excel中添加公式报错
- 抢分问题, 快来啊, 会者不难, 分不多,但容易得, 本人一向诚实可信, 保证给分
- 怎样用Delphi实现远程控制 ? 最好要源码,(在线等)
- 请问: property Parent: TWinControl read FParent write SetParent; 中的“read”“write”什么意思
begin
new(ReorderArray[i]); 这应该是必要的吧,定义的头节点
ReorderArray[i]^.next:=nil;
end; for i:=0 to QQcount -1 do //为指针数组链表赋值
begin
new(ReorderArray[A[i]]^.next); 为数组的相应项添加链表 这里错了吗????
ReorderArray[A[i]]:=ReorderArray[A[i]]^.next;
ReorderArray[A[i]]^.Xuhao:=A[i];
ReorderArray[A[i]]^.next :=nil;
end;
大致的意思是,
在窗体创建的时候,创建链。
按button2,取链中所有XuHao数据。放到edit1中!
ReorderArray[2]--〉0--〉4--〉nil
ReorderArray[3]--〉1--〉2--〉nil
ReorderArray[5]--〉3--〉nil
ReorderArray[4]--〉5--〉nil
ReorderArray[1]--〉6--〉nil ReorderArray[0]--〉nil
这样 for i:= MaxEnter downto 0 do
begin
while ReorderArray[i].next <> nil do
begin
语句1 //读取ReorderArray[i].Xuhao就把数组A[]中的元素排序出来了即:A[3] 〉A[5]……
end;
end;这样对数组一次扫描就可以按升序或降序排出来了,时间复杂度为O(n)。应该算是快速排序吧。
我在弄数组链表时“语句1” 就没执行,不知道错在哪里?
既然你的数组ReorderArray[i].next一直为nil,那么while ReorderArray[i].next <> nil do一执行就跳出循环
只是我用new分配指针内容后没有释放,不过程序也没有出错。
这样释放指针数组链表为什么错了:
var
i:integer;
begin
for i:= 0 to MaxEnter do
begin
Refi:=ReorderArray[i]^.next ;
while Refi <> nil do
begin
ReorderArray[i]:=Refi^.next;
dispose(Refi);
Refi:=ReorderArray[i]^.next; ////这里错了????
end;
dispose(ReorderArray[i]);
end;
end;
new分配指针内容后不释放可以嗎?