1、1北京邮电大学远程教育信息管理与信息系统专业数据结构实验指导书实验一 线性表的插入和删除一、 实验目的1、掌握使用 Turbo Pascal 上机调试线性表的基本方法;2、掌握线性表的基本操作:插入、删除、查找以及线性表合并等运算在顺序存储结构和链接存储结构上的运算。二、 实验要求1、认真阅读和掌握本实验的程序。2、上机运行本程序。3、保存和打印出程序的运行结果,并结合程序进行分析。4、按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果三、 注意事项:在磁盘上创建一个目录,专门用于存储数据结构实验的程序。四、 实验内容程序 1:线性表基本操作的实现这个程序中演示了顺序表的
2、创建、插入、删除和查找。程序如下:PROGRAM seqlist(input,output);线性表可能达到的最大长度CONST maxlen = 1024;TYPE elemtp = integer;线性表的顺序存储结构TYPE 2seqlisttp = RECORD用一维数组来描述线性表的顺序存储结构elem: ARRAY1.maxlen OF elemtp;定义子界类型 last,它的取值范围是 0 到 maxlenlast: 0.maxlen 线性表长度END;初始化线性表PROCEDURE initlist(VAR v:seqlisttp; ml:integer);BEGINv.la
3、st:=0;END;向线性表的第 i 个元素之前插入一个元素 xPROCEDURE insertlist(VAR v:seqlisttp; i:integer; b:elemtp);VAR j:integer;BEGINIF (iv.last+1)THEN writeln(error!)ELSE IF v.last=maxlenTHEN writeln(overflow)ELSE BEGINFOR j:=v.last DOWNTO i DOv.elemj+1:=v.elemj;v.elemi:=b;v.last:=v.last+1;END;END;从线性表中删除第 i 个位置的元素PROCED
4、URE deletelist(VAR v:seqlisttp; i:integer);VAR j:integer;BEGIN3IF (iv.last+1)THEN writeln(error!)ELSE IF v.last=maxlenTHEN writeln(overflow)ELSE BEGINFOR j:=i+1 TO v.last DOv.elemj-1:=v.elemj;v.last:=v.last-1;END;END;从线性表中查找元素FUNCTION findlist(v:seqlisttp; x:elemtp):integer;VAR i:integer;BEGINi:=1;W
5、HILE (ix) DOi:=i+1;IF i0 THEN writeln(The location of first ,x, is ,k)ELSE writeln(not found);writeln(a.last);END.5实验二 单链表操作一、实验目的1掌握握单链表的基本操作:插入、删除、查找等运算。二、实验要求1认真阅读和掌握本实验的程序。2上机运行本程序。3保存和打印出程序的运行结果,并结合程序进行分析。4按照你对单链表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果三、实验内容程序 1:单链表基本操作的实现这个程序中演示了单链表的创建、插入、删除和查找。程序如下:PRO
6、GRAM linklist(input,output);TYPE elemtp = char;单链表中结点的类型TYPEpointer=node;node=RECORDdata:elemtp;next:pointer;END;头插法建表,先进后出 PROCEDURE createlistf(VAR v:pointer);VAR ch:elemtp;head:pointer; 头指针p:pointer; 工作指针6BEGINhead:=NIL;write(Please input chars: );read(ch); 上一条语句会输出一个换行符, 我们先把它读出来,丢掉 read(ch);WHI
7、LE (ord(ch)13) DO7BEGINnew(p);p.data:=ch;IF head=NIL THEN head:=pELSE last.next:=p;last:=p;read(ch);END;IF lastNIL) AND (jNIL THENBEGINp.next:=s.next;s.next:=p;ENDELSE writeln(not found);END;END;删除操作,删除第 i 个结点,i 大于等于 1PROCEDURE deletelist(VAR v:pointer; i:integer);VAR p:pointer; 工作指针BEGINIF vNIL THE
8、Np.next:=p.next.nextELSE writeln(erroe);END;ENDELSE writeln(The list is null.);END;遍历单链表PROCEDURE traverlist(v:pointer);VARp:pointer;BEGINp:=v;WHILE (pNIL 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掌握用指针类型描述、访问和处理二叉树的运算。