链表

nanyankaoran 2011-03-01 03:24:57
type
PMYnode = ^TMYnode;
TMYnode = record
data:Pointer ;
next :PMYnode ;
end;
type
PMYlist =^TMYlist;
TMYlist = record
couunt:Integer ;
node:PMYnode ;
end;
TSearchFunc= function (where ,what :Pointer ):Boolean ;
function create ():PMYlist ;

function create ():PMYlist ;//初始化链表
var
p:PMYlist ;
begin
New(p);
p^.couunt :=0;
p^.node :=nil ;
Result :=p;
end;

procedure delnode(list:PMYlist ;index :Integer );
var
delnode,currnode:PMYnode ;
i:Integer ;
begin
if index = -1 then
begin
while list^.node <>nil do
begin
delnode := list^.node ;
list^.node :=list^.node^.next;
Dispose(delnode );
delnode :=nil;
end;
list^.couunt :=0;

end
else if index = 0 then//删除第一个节点,
begin
delnode := list^.node ; //这里是得到第一个节点吗?
list^.node :=list^.node^.next ;//这里不明白,如有5个节点,那,3,4,5节点没移动?
Dispose(delnode );
delnode :=nil ;
dec(list^.couunt );
end
else
begin
if List^.couunt <= Index then // If the position doen not exist
begin
exit;
end
else // Find the specific position given by Index and delete it
begin
CurrNode := List^.Node;
for i := 0 to Index - 2 do
begin
CurrNode := CurrNode^.Next;
end;
// Delete it
DelNode := CurrNode^.Next;
CurrNode^.Next := DelNode^.Next;
Dispose(DelNode);
DelNode := nil;
Dec(List^.couunt );
end;
end;
end;
...全文
85 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitao 2011-03-01
  • 打赏
  • 举报
回复
如果不是课程作用,delphi有现成的类库可以使用
ok1411 2011-03-01
  • 打赏
  • 举报
回复
链表是不需要移动的,是靠指针串起来的,删掉一个,把指针指向下一个就是了
liangpei2008 2011-03-01
  • 打赏
  • 举报
回复
链表不是线性存储的,当删除某结点时,只需要改变一下Next Node的指向即可

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧