gpt4 book ai didi

delphi - Pascal 中的链表

转载 作者:行者123 更新时间:2023-12-03 18:25:08 25 4
gpt4 key购买 nike

我正在寻找一个好的和简单的 Pascal 链表实现。
作为一个 Pascal 初学者,它作为学习 Material 对我有很大帮助。

感谢您的任何提示。

最佳答案

我在旧邮件中找到了我们已经完成的实现。代码是“法语”,所以我不会碰它,以免忘记某个会破坏编译的函数:-)

首先,我们有一个“元素”类型,让我们可以轻松地更改我们想要存储在列表中的内容:

unit U_ELEMENT;

interface

{ We store integers }
type
T_ELEMENT = Integer;

{ Reads an element }
procedure lireElement(out res:INTEGER; out code:WORD; out ch:STRING);
{ Write and element }
procedure ecrireElement(const t:T_ELEMENT);

implementation

procedure lireElement(out res:T_ELEMENT; out code:WORD; out ch:STRING);
begin
write('> ');readln(ch);
val(ch,res,code);
end;

procedure ecrireElement(const t:T_ELEMENT);
begin
write(t);
end;

end.

然后,实际的列表模块,它旨在在列表的开头添加元素:
unit U_LISTE;

interface

uses U_ELEMENT;

const LISTEVIDE = NIL;
type
T_LISTE = ^T_CELLULE;
T_CELLULE = record
info: T_ELEMENT; { The stored information }
suivant: T_LISTE; { Pointer to the next element }
end;
{ Add an heading element }
function ajouteEnTete(e:T_ELEMENT;l:T_LISTE):T_LISTE;
{ returns the head of the list }
function tete(l:T_LISTE):T_ELEMENT;
{ returns the list, without the head }
function reste(l:T_LISTE):T_LISTE;
{ List empty? }
function estListeVide(l:T_LISTE):BOOLEAN;
{ Modify the header element }
procedure modifierTete(var l:T_LISTE;const e:T_ELEMENT);
{ Modify the list after the head }
procedure modifierReste(var l1:T_LISTE; const l2:T_LISTE);

implementation

function ajouteEnTete(e:T_ELEMENT;l:T_LISTE):T_LISTE;
var l1:T_LISTE;
begin
new(l1);
l1^.info := e;
l1^.suivant := l;
ajouteEnTete := l1;
end;

function tete(l:T_LISTE):T_ELEMENT;
begin
tete := l^.info;
end;

function reste(l:T_LISTE):T_LISTE;
begin
reste := l^.suivant;
end;

function estListeVide(l:T_LISTE):BOOLEAN;
begin
estListeVide := l=NIL;
end;

procedure modifierTete(var l:T_LISTE;const e:T_ELEMENT);
begin
l^.info := e;
end;

procedure modifierReste(var l1:T_LISTE; const l2:T_LISTE);
begin
l1^.suivant := l2;
end;

end.

还有一个小测试程序:
program testeliste;

uses U_ELEMENT,U_LISTE;

procedure afficherListe(const l:T_LISTE);
var l1: T_LISTE;
vide: BOOLEAN;
begin
write('(');
l1 := l;
vide := estListeVide(l1);
while not(vide) do
begin
ecrireElement(tete(l1));
l1 := reste(l1);
vide := estListeVide(l1);
if not(vide) then
write(',');
end;
write(')');
writeln;
end;

var res:T_ELEMENT;
code:WORD;
ch:STRING;
i:INTEGER;
l:T_LISTE;

Begin
l:=LISTEVIDE;
for i:=0 to 9 do
begin
lireElement(res,code,ch);
l := ajouteEnTete(res,l);
end;
afficherListe(l);

afficherListe(reste(l));
afficherListe(reste(reste(reste(l))));
afficherListe(ajouteEnTete(tete(l),l));

End.

正如我所说,这是我开始学习 CS 时制作的一个旧(非常旧)程序,所以它可能不适合 :-) ,但我认为它有助于语法和全局思想。

关于delphi - Pascal 中的链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3896629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com