数据结构实验指导书(3)

2019-03-28 09:10

二、实验要求

1.认真阅读和掌握本实验的程序。 2.上机运行本程序。

3.保存和打印出程序的运行结果,并结合程序进行分析。

4.按照你二叉树的操作需要,重新改写主程序并运行,打印出文件清单和运行结果

三、实验内容

程序1: 按先序次序输入二叉树中结点的值(一个字符),`0`表示空树,生成二叉树的二叉链表存储结构, bt为指向根结点的指针。然后按层次顺序遍历二叉树。

算法思想:本算法采用一个队列q,先将二叉树根结点入队列,然后退队列,

输出该结点;若它有左子树,便将左子树根结点入队列;若它有右子树,遍将右子树根结点入队列,直到队列空为止。因为队列是先进先出,从而达到按层次顺序遍历二叉树的目的。 程序如下:

PROGRAM btreed(input,output);

CONST

M = 100;

TYPE

elemtp = char;

{二叉树的链式存储结构} TYPE

btree = ^node; node = RECORD

data:elemtp; lchild,rchild:btree;

END;

TYPE

vector=ARRAY[0..M] OF btree;

11

{生成二叉树}

VAR root:btree; que:vector;

front,rear:integer;

PROCEDURE create(VAR bt:btree); VAR x:elemtp; BEGIN read(x);

IF (ord(x)=48) THEN bt:=NIL ELSE BEGIN new(bt); bt^.data:=x;

{建根结点}

create(bt^.lchild); {建左子树} create(bt^.rchild); {建右子树}

END;

END;

PROCEDURE inorder(bt:btree); BEGIN IF bt<>NIL THEN BEGIN inorder(bt^.lchild); write(bt^.data,' ');

inorder(bt^.rchild);

END;

END;

12

PROCEDURE enqueue(bt:btree); BEGIN IF front<>((rear+1) MOD M) THEN BEGIN rear:=((rear+1) MOD M);

que[rear]:=bt;

END;

END;

PROCEDURE delqueue(VAR bt:btree); BEGIN IF front=rear THEN bt:=NIL ELSE BEGIN front:=((front+1) MOD M);

bt:=que[front];

END;

END;

PROCEDURE levorder(bt:btree); VAR p:btree; BEGIN

IF bt<>NIL THEN BEGIN enqueue(bt);

WHILE front<>rear DO BEGIN delqueue(p); write(p^.data,' ');

IF p^.lchild<>NIL THEN

13

enqueue(p^.lchild); IF p^.rchild<>NIL THEN enqueue(p^.rchild); END; END;

END;

{主程序} BEGIN

writeln('Please input the tree: '); create(root); inorder(root); writeln(''); front:=0; rear:=0; levorder(root);

END.

实验四 图的操作

一.实验目的

1.掌握图的基本存储方法。

2.掌握有关图的操作算法并用高级语言编程实现; 3.熟练掌握图的两种搜索路径的遍历方法。 二.实验要求

1.认真阅读和掌握本实验的程序。 2.上机运行本程序。

3.保存和打印出程序的运行结果,并结合程序进行分析。

4.按照你对图的操作需要,重新改写主程序并运行,打印出文件清单和运行结果

14

三.实验内容

以邻接矩阵和邻接表的方式存储连通图。然后分别用优先深度算法遍历邻接居真方式存储的图和邻接表方式存储的图。这里假设图只有4个顶点,在实验的时候可以根据需要更改vtxnum的值。 程序如下:

PROGRAM graphd(input,output);

CONST {edge边,vertex顶点,digraph向,weight权} vtxnum=4; {图中顶点数}

k1=0; {是否有向,0为无,非0为有} k2=0; {是否有权,0为无,非0为有}

maxvalue=10000; {定义无穷大}

TYPE elemtp=integer;

TYPE bool=ARRAY[0..vtxnum] OF boolean; {邻接矩阵存储无向无权图} TYPE vtxptr=1..vtxnum; bit=0..1; TYPE

vertex=RECORD data:elemtp; {顶点信息}

END;

TYPE

arc=RECORD

adj:bit; {表示两个顶点之间是否存在关系} END; TYPE graph=RECORD

vexs: ARRAY[vtxptr] OF vertex;

arcs: ARRAY[vtxptr,vtxptr] OF arc;

END;

{邻接表存储无向无权图} TYPE edgeptr=^edgenode;

15


数据结构实验指导书(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018中考历史模拟试卷附答案选择题专项训练

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: