淮海工学院数据结构第2次实验Word文档格式.docx

上传人:b****6 文档编号:16876086 上传时间:2022-11-26 格式:DOCX 页数:13 大小:137.58KB
下载 相关 举报
淮海工学院数据结构第2次实验Word文档格式.docx_第1页
第1页 / 共13页
淮海工学院数据结构第2次实验Word文档格式.docx_第2页
第2页 / 共13页
淮海工学院数据结构第2次实验Word文档格式.docx_第3页
第3页 / 共13页
淮海工学院数据结构第2次实验Word文档格式.docx_第4页
第4页 / 共13页
淮海工学院数据结构第2次实验Word文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

淮海工学院数据结构第2次实验Word文档格式.docx

《淮海工学院数据结构第2次实验Word文档格式.docx》由会员分享,可在线阅读,更多相关《淮海工学院数据结构第2次实验Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

淮海工学院数据结构第2次实验Word文档格式.docx

3、实现循环队列的创建、进队、出队等基本操作(数据元素类型自己选取,如整型、字符型等),并实时给出队列的操作变化状态;

4、实现链式队列的创建、进队、出队等基本操作(数据元素类型自己选取,如整型、字符型等),并实时给出队列的操作变化状态;

(二)选做题(视自己能力而定,数量不限):

任选一个或多个源程序(已经发给学委),并阅读、调试和运行程序,而后给出程序功能分析和实例运行演示;

1、实现表达式求值算法程序;

2、用递归算法实现汉诺塔问题算法程序;

3、使用循环队列实现打印杨辉三角形算法程序。

3实验步骤与源程序

第一题:

#include<

stdio.h>

stdlib.h>

#defineTRUE1

#defineFALSE0

#defineSize50

typedefstruct

{

intelem[Size];

inttop;

}SeqStack;

voidInitStack(SeqStack*S)

S->

top=-1;

}

intIsEmpty(SeqStack*S)

return(S->

top==-1?

TRUE:

FALSE);

//判断栈空为空是真反之为假

intIsFull(SeqStack*S)

top==Size-1?

//判断栈满为满是真反之为假

intPush(SeqStack*S,intx)//压栈

if(S->

top==Size-1)

return(FALSE);

S->

top++;

elem[S->

top]=x;

return(TRUE);

intPop(SeqStack*S,int*x)//弹出

{

top==-1)

else

{

*x=S->

top];

top--;

return(TRUE);

}

voidmain()

SeqStackS;

intx,y,i,l;

InitStack(&

S);

if(!

IsFull(&

S))

printf("

栈空:

\n"

);

printf("

输入要压入的元素个数(50以内):

scanf("

%d"

&

l);

输入要压入的元素:

for(i=0;

i<

l;

i++)

scanf("

y);

Push(&

S,y);

弹出:

while(!

IsEmpty(&

Pop(&

S,&

x);

%d\n"

x);

第二题:

typedefstructnode

intdata;

structnode*next;

}LinkStackNode;

typedefLinkStackNode*LinkStack;

intIsEmpty(LinkStackS)

returnNULL==S->

next?

FALSE;

intInitStack(LinkStack*S)

*S=(node*)malloc(sizeof(node));

if(NULL==*S)

returnFALSE;

(*S)->

next=NULL;

returnTRUE;

intPush(LinkStackS,intx)

LinkStackNode*temp;

temp=(LinkStackNode*)malloc(sizeof(LinkStackNode));

if(temp==NULL)

return(FALSE);

temp->

data=x;

next=S->

next;

next=temp;

intPop(LinkStackS,int*x)

LinkStackNode*temp;

temp=S->

if(temp==NULL)

next=temp->

*x=temp->

data;

free(temp);

LinkStackNode*s;

s);

intx,i,l;

if(IsEmpty(s))

栈空\n"

请输入压入元素个数(50以内):

请输入压入元素:

Push(s,x);

IsEmpty(s))

{

Pop(s,&

printf("

}

第三题:

#defineMAXSIZE50

typedefstruct

intelement[MAXSIZE];

intfront;

intrear;

}SeqQueue;

voidInitQueue(SeqQueue*Q)

Q->

front=Q->

rear=0;

intEnterQueue(SeqQueue*Q,intx)

if((Q->

rear+1)%MAXSIZE==Q->

front)

element[Q->

rear]=x;

rear=(Q->

rear+1)%MAXSIZE;

intDeleteQueue(SeqQueue*Q,int*x)

if(Q->

front==Q->

rear)

*x=Q->

front];

front=(Q->

front+1)%MAXSIZE;

intIsEmpty(SeqQueue*Q)

return(TRUE);

SeqQueues;

InitQueue(&

if(IsEmpty(&

s))

此时为空队列\n"

请输入进队元素个数\n"

请输入元素\n"

EnterQueue(&

s,x);

出队:

DeleteQueue(&

s,&

第四题:

typedefstructNode

structNode*next;

}LinkQueueNode;

LinkQueueNode*front;

LinkQueueNode*rear;

}LinkQueue;

intIsEmpty(LinkQueue*Q)

returnQ->

front==Q->

rear?

intInitQueue(LinkQueue*Q)

front=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));

front!

=NULL)

Q->

rear=Q->

front;

front->

next=NULL;

return(TRUE);

elsereturn(FALSE);

intEnterQueue(LinkQueue*Q,intx)

LinkQueueNode*NewNode;

NewNode=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));

if(NewNode!

NewNode->

rear->

next=NewNode;

rear=NewNode;

intDeleteQueue(LinkQueue*Q,int*x)

LinkQueueNode*p;

rear)

p=Q->

next;

next=p->

rear==p)

*x=p->

free(p);

return(TRUE);

LinkQueueq;

q);

if(IsEmpty(&

q))

请输入进队元个数素\n"

请输入元素:

q,x);

q,&

4测试数据与实验结果(可以抓图粘贴)

5结果分析与实验体会

开始在编写第一题时,将所有代码完成后一直报错,反复检查代码没有错误,后来看到头文件名是#include<

iostream.h>

因为C++习惯导致错误,后来改为<

就正确了,而且这些题目都是很基础的题目,在之后的编程中也遇到很多问题,如在第一题输出用printf("

时,无报错,但输出是奇怪数值,绞尽脑汁都找不出问题所在,但是我注意到输出的数值都是一样的,猜测到可能是printf("

中&

x是错误,改为printf("

后正确,可是还是说不出具体的原因,这些都表明自己的基础差,还需要多巩固基础知识。

通过这次试验编程,对栈及队列加深理解,熟记了一些代码,了解自己不足之处,收获不少。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1