数据结构实验指导2012(2)

2020-02-21 11:20

实验1.3 栈的基本操作的实现

一、实验目的:

掌握栈的顺序存储结构的实现方法,能够实现栈的基本操作。

二、实验内容:

建立一个有n个元素的顺序栈(用多次入栈来实现),并能够完成出栈及求栈长等基本操作。

1进入visual c++6.0集成环境。

2书写程序清单。注意如下问题。 栈顶指针的使用方法。

入栈如空间不够应该如何扩充。

如何进行数据的输入输出。

3调试程序,运行,输入数据。注意应输入一些边界数据和一些非法数据以证明算法的健壮性。

三、实验题目:

参照以前所学内容,思考并实现链栈的基本操作。 附:实验内容的程序清单。 #include \typedef struct {

int *base; int *top;

int stacksize;

}Sqstack;

int Initstack(Sqstack *S)

{

S->base=(int *)malloc(100*sizeof(int)); if(!S->base) exit(-2); S->top=S->base; S->stacksize=100; return 1; }

int Gettop(Sqstack *S,int *e) {

if(S->top==S->base) return 0; *e=*(S->top-1); return 1;

}

int Push(Sqstack *S,int e) {

if(S->top-S->base>=S->stacksize)

{

S->base=(int *)realloc(S->base,(S->stacksize+10*sizeof(int))); if(!S->base) exit(-2);

S->top=S->base+S->stacksize; S->stacksize+=10; }

*(S->top++)=e; return 1; }

int Pop(Sqstack *S,int *e) {

if(S->top==S->base) return 0; *e=*(--S->top); return 1;

}

int Stacklength(Sqstack S) {

return S.top-S.base; }

int emptystack(Sqstack S) {

if (S.top==S.base) return 1;

else return 0; } main() {

Sqstack S; int i,a,b,n;; Initstack(&S); scanf(\ for(i=1;i<=5;i++) Push(&S,i);

a=Stacklength(S); printf(\ Pop(&S,&b); printf(\ }

实验1.4 队列的基本操作的实现

一、实验目的:

掌握循环队列的实现方法,能够实现循环队列的基本操作。

二、实验内容:

建立一个空循环队列,并能够完成出队入队及求队长等基本操作。

1进入visual c++6.0集成环境。 2书写程序清单。注意如下问题。 循环队列应该使用顺序队列。

循环队列如何判断为空或者为满。

3调试程序,运行,输入数据。注意边界数据和非法数据的检测。

三、实验题目:

参照以前所学内容,思考并实现链队列的基本操作。 附:实验内容的程序清单。 #define MAXSIZE 100 #include \typedef struct { int *base; int front; int rear;

}SqQueue;

int Initqueue(SqQueue *q)

{

q->base=(int *)malloc(MAXSIZE*sizeof(int)); if(!q->base) exit(-2); q->front=0; q->rear=0;

return 1; }

int Enqueue(SqQueue *q,int e) {

if((q->rear+1)%MAXSIZE==q->front) return 0;

q->base[q->rear]=e;

q->rear=(q->rear+1)%MAXSIZE; return 1;

}

int Dequeue(SqQueue *q,int *e)

{

if(q->front==q->rear) return 0; *e=q->base[q->front];

q->front=(q->front+1)%MAXSIZE; return 1; } main() {

SqQueue Q; int e,a;

Initqueue(&Q); Enqueue(&Q,3); Enqueue(&Q,5); a=Dequeue(&Q,&e); if(a==0)

printf(\else {

printf(\ printf(\ } }??

实验二 二叉树遍历的实现

一、实验目的:

掌握二叉树的二叉链表的存储方法,能够实现二叉树的建立和三种递归遍历。

二、实验内容:

以二叉链表的存储结构建立一个二叉树,能够完成某种递归和非递归遍历。。

1进入Turboc2.0或Turboc3.0集成环境。

2书写程序清单。注意如下问题。

如何进行递归的建立一棵二叉树,数据输入应该如何表示才能结束。

遍历的递归和非递归是如何实现的,注意出口的书写。 3调试程序,运行,输入数据进行检测。

三、实验题目:

1、参照书中算法和以前所学内容,用递归方法和非递归实现计算二叉树所有叶子结点个数的程序。

附:实验内容的程序清单(先序建立一棵二叉树,并进行递归的先序遍历)。 #include \#include \

typedef struct BiTNode

{

char data;

struct BiTNode *lchild,*rchild; }BiTNode,*BiTree;

void CreateBT(BiTree *T) {

char ch; scanf(\ if(ch==' ') *T=NULL; else {

if(!(*T=(BiTNode*)malloc(sizeof(BiTNode)))) exit(-2); (*T)->data=ch;

CreateBT(&(*T)->lchild); CreateBT(&(*T)->rchild);

} }

void visit(char ch) {

printf(\}

void PreorderBT(BiTree T) {

if(T)

{

visit(T->data); PreorderBT(T->lchild); PreorderBT(T->rchild); }

} Void in0rderBT(BiTree T) {

if(T)

{

in0rderBT(T->lchild); visit(T->data); in0rderBT(T->rchild);

} } Void

post0rderBT(BiTree T) {

if(T)


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

下一篇:煤矿安全知识题库2

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

马上注册会员

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