Delphi 在pascal中的简单链表节点中删除
我已经编写了一段代码,可以在pascal中的简单链表节点中工作。现在我需要添加一个过程,可以删除或删除我的简单链表中的元素。我已经做了很多测试和添加的过程,但是我不知道如何添加一个可以删除项目的过程。这是我的密码:Delphi 在pascal中的简单链表节点中删除,delphi,linked-list,nodes,procedures,Delphi,Linked List,Nodes,Procedures,我已经编写了一段代码,可以在pascal中的简单链表节点中工作。现在我需要添加一个过程,可以删除或删除我的简单链表中的元素。我已经做了很多测试和添加的过程,但是我不知道如何添加一个可以删除项目的过程。这是我的密码: type node = ^MyRec; MyRec = record value: Integer; index: integer; next: node end; var head, tail: node; i, ix: Integer
type
node = ^MyRec;
MyRec = record
value: Integer;
index: integer;
next: node
end;
var
head, tail: node;
i, ix: Integer;
const
el = 14;
procedure Insert;
var
tmp: node;
ix: Integer;
begin
Randomize;
for i := 1 to el do
begin
new (tmp);
inc(ix);
tmp^.value := Random(88);
tmp^.index := ix;
tmp^.next:= nil;
if head = nil
then head := tmp
else
tail^.next := tmp;
tail:= tmp;
end;
end;
//displays the list
procedure Display;
var
tmp: node;
begin
tmp := head;
while tmp <> nil do
begin
WriteLn('Val=', tmp^.value, ' ID=', tmp^.index);
tmp := tmp^.next
end;
end;
begin
head := nil;
ReadLn;
end.
我将给你一些信息和伪代码,这样你就能自己解决这个问题 您可以将链表视为项目链:
Head -> Item1 -> Item2 -> Item3 -> Item4 <- Tail
请修复缩进并尝试删除所有不必要的代码,如“已满”以及与此问题无关的其他代码。@LasseV.Karlsen编辑了我的代码并发布了它。这应该是一个单链表还是双链表?您有一个prev字段,但似乎没有在任何地方设置它。@500 InternalServerError它支持为single。是我的错误,我添加了prev。我试图理解链表是如何工作的。现在我把它删掉了。此外,我还有一项任务,将我的列表添加为结束指针。这是怎么回事?
procedure Insert(index, value: Integer);
var
tmp: node;
begin
new (tmp);
tmp^.value := value;
tmp^.index := index;
tmp^.next:= nil;
if head = nil
then head := tmp
else
tail^.next := tmp;
tail:= tmp;
end;
procedure FillList;
var
ix: Integer;
begin
Randomize;
for i := 1 to el do
begin
inc(ix);
Insert(ix, Random(88));
end;
end;