BEGIN head:=NIL;
write('Please input chars: ');
{read(ch);} {上一条语句会输出一个换行符,}
{我们先把它读出来,丢掉}
read(ch); WHILE (ord(ch)<>13) DO BEGIN new(p); p^.data:=ch; p^.next:=head; head:=p;
read(ch);
END;
v:=head;
END;
{尾插法建表,先进先出}
PROCEDURE createlistr(VAR v:pointer); VAR ch:elemtp;
head:pointer; {头指针} last:pointer; {尾指针}
p:pointer; {工作指针}
BEGIN head:=NIL; last:=NIL;
write('Please input chars: ');
read(ch);
read(ch); WHILE (ord(ch)<>13) DO
6
BEGIN new(p); p^.data:=ch;
IF head=NIL THEN head:=p ELSE last^.next:=p;
last:=p;
read(ch); END;
IF last<>NIL THEN
last^.next:=NIL;
v:=head;
END;
{按序号查找操作}
PROCEDURE getnode(v:pointer; VAR listnode:pointer; i:integer); VAR p:pointer;
j:integer;
BEGIN p:=v; j:=1;
WHILE (p^.next<>NIL) AND (j
j:=j+1;
END;
IF j=i THEN listnode:=p
ELSE listnode:=NIL;
END;
{插入操作,在第i个元素之后插入x,i大于等于0} PROCEDURE insertlist(VAR v:pointer; x:elemtp; i:integer);
VAR
7
p,s:pointer; {工作指针} j:integer;
BEGIN new(p); p^.data:=x;
IF i=0 THEN {如果i=0,则把p结点插入表头} BEGIN p^.next:=v;
v:=p
END
ELSE BEGIN getnode(v,s,i); {返回第i个结点的指针} IF s<>NIL THEN BEGIN p^.next:=s^.next;
s^.next:=p;
END
ELSE writeln('not found');
END;
END;
{删除操作,删除第i个结点,i大于等于1} PROCEDURE deletelist(VAR v:pointer; i:integer); VAR
p:pointer; {工作指针}
BEGIN
IF v<>NIL THEN
BEGIN
8
IF i=1 THEN {如果i=1,则删除头结点}
v:=v^.next
ELSE BEGIN getnode(v,p,i-1); {返回第i-1个结点的指针} IF p<>NIL THEN p^.next:=p^.next^.next
ELSE writeln('erroe');
END;
END
ELSE writeln('The list is null.'); END;
{遍历单链表}
PROCEDURE traverlist(v:pointer); VAR
p:pointer;
BEGIN p:=v;
WHILE (p<>NIL)DO BEGIN write(p^.data,' ');
p:=p^.next;
END;
END;
{建立线性表} VAR
la,lb:pointer;
listnode:pointer;
9
c:elemtp;
m:integer;
BEGIN createlistf(la); writeln(la^.data); createlistr(lb); writeln(lb^.data); getnode(la,listnode,3);
IF listnode<>NIL THEN writeln(listnode^.data) ELSE writeln('null');
traverlist(la);
writeln('');
traverlist(lb);
writeln(''); writeln('Input a char and an integer:');
read(c);
read(c,m); insertlist(la,c,m); traverlist(la); writeln('');
deletelist(lb,3);
traverlist(lb);
END.
实验三 二叉树操作
一、实验目的
1.进一步掌握指针变量的含义。
2.掌握二叉树的结构特征,以及各种存储结构的特点及使用范围。3.掌握用指针类型描述、访问和处理二叉树的运算。
10