栈和队列实验报告
数据结构实验报告
一、实验目的
1、熟练掌握栈和队列的基本操作在两种存储结构上的实现。
、会用栈和队列解决简单的实际问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
。 2
二、实验
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
题目一、试写一个算法~判断依次读入的一个以@为结束符的字符序列~是否为回文。所谓“回文“是指正向读和反向读都一样的一字符串,如“321123”或“ableelba”。
题目二、编程模拟队列的管理~主要包括:出队列、入队、统计队列的长度、查找队列某个元素e、及输出队列中元素。
三、 实验
步骤
新产品开发流程的步骤课题研究的五个步骤成本核算步骤微型课题研究步骤数控铣床操作步骤
1.回文序列:
1.?、数据结构与核心算法的设计描述
typedef int SElemType;//元素类型定义
typedef char ElemType;
typedef struct
{ ElemType *base;
ElemType *top; } SqStack;//栈的定义
//通过栈的“后进先出”特性输出序列的逆序
typedef struct QNode///队列的定义
{ ElemType data;
struct QNode *next;
} QNode, *QueuePtr;
typedef struct
{ QueuePtr front;
QueuePtr rear;
} LinkQueue;
//通过队列的“先进先出”特性~输出序列的正序
栈的函数定义
void InitStack(SqStack &S )//构造一个空栈
int Push(SqStack &S, SElemType e )//入栈
int Pop(SqStack &S,SElemType &e)//出栈
int StackEmpty(SqStack S)//将栈置空
//队列函数定义
int InitQueue(LinkQueue &Q)//构造一个空队
int EnQueue(LinkQueue &Q,QElemType e)//插入元素e为新队尾元素
int DeQueue(LinkQueue &Q,QElemType &e)//删除对为元素~用e返回其值
int IsReverse()(LinkStack *S,SqQueue Q) //判断回文序列
?、函数调用及主函数设计
回文序列判断函数关系图:
main()函数
栈函数 判断回文函数 队列函数
构造栈Initstack() 入栈入队 构造一个队列 入栈push() Push(S,c); InitQueue(0 出栈pop() EnQueue(&Q,c);出入队EnQueue() 将栈置空栈出队Pop(S,e) 出队DeQueue() stackempty() DeQueue(&Q,e) 判断队列是否为空 QueueEmpty() 比较 Pop(S,e)!=DeQueue (&Q,e)
, 可用函数的调用关系图说明,
? 程序调试及运行结果分析
图-1
图-2
图-1和图-2是分别输入字符串“123321@”和“123@”的运
行结果~由图可以得知~该程序结果是正确的。
四、主要算法
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
图及程序清单
1、主要算法流程图:
#include
#include
#include
# define STACK_INIT_SIZE 100 # define STACKINCREMENT 10 # define OK 1
# define ERROR 0
typedef int ElemType; typedef struct
{
ElemType *base;
ElemType *top;
} SqStack;
typedef struct QNode {
ElemType data;
struct QNode *next; } QNode, *QueuePtr,
typedef struct
{
QueuePtr front;
QueuePtr rear;
} LinkQueue;
void InitStack(SqStack *S) { S->base=(ElemType *)malloc(STACK_INIT_SIZE
*sizeof(ElemType));
if (!S->base) exit(0);
S->top=S->base; }
int StackEmpty(SqStack S) {
if (S.top==S.base)
return 0;
else
return 1;
}
void Push(SqStack *S,ElemType e)
{
if (S->top-S->basetop)=e; S->top++;}
else
cout<<"\n栈满"<top>S->base)
S->top--;
e=*(S->top);
return e;
}
void InitQueue(LinkQueue *Q) {
Q->front=Q->rear=(QueuePtr)malloc(sizeof(QNode))
;
if (!(Q->front)) exit(0);
Q->front->next=NULL; }
int QueueEmpty(LinkQueue Q) {
if (Q.front==Q.rear)
return 0;
else
return 1;
}
void EnQueue(LinkQueue *Q, ElemType e)
{
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
if (!p) exit(0);
p->data=e; p->next=NULL;
Q->rear->next=p;
Q->rear=p;
}
int DeQueue(LinkQueue *Q, ElemType e)
{
QueuePtr p;
if (Q->front!=Q->rear)
{ p=Q->front->next;
e=p->data;
Q->front->next=p->next;
if (Q->rear==p) Q->rear=Q->front;
free(p);
}
return e;
}
int IsReverse(SqStack *S,LinkQueue Q)//判断函数 {
char c=getchar();
int e;
while(c!='@')
{
Push(S,c);
EnQueue(&Q,c);
c=getchar();
}
while(StackEmpty(*S)) {
if( Pop(S,e)!=DeQueue(&Q,e))
return 0;
}
return 1;
}
int main()//主函数
{
SqStack s;LinkQueue q;
InitStack(&s);InitQueue(&q);
cout<<"请输入一行字符串~以@结束!"< #include #define MAXQSIZE 100 typedef struct
{
int *base;
int front;
int rear;
}SqQueue;
int InitQueue(SqQueue &Q)//队列初始化
{
int n;
Q.base=(int*)malloc(MAXQSIZE*sizeof(int));
if(!Q.base)exit(0);
Q.front=Q.rear=0;
cout<<"输入初始化队列元素个数:"<>n;
cout<<"请输入要读入的元素:";
for(int i=1;i<=n;i++)
{
int e;
cin>>e;
if((Q.rear+1)%MAXQSIZE==Q.front) return 0;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
}
cout<<"初始化成功!"<>e;
if((Q.rear+1)%MAXQSIZE==Q.front) return 0;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
cout<<"已成功插入元素e!"<>e;
a=Q.rear;
a=a-1;
while(Q.base[a]!=e&&a>0)
a--;
if(a==0)
cout<<"不存在此元素!"<0)
{
cout<>a;
switch(a)
{
case 1: InitQueue(Q); break;
case 2: DeQueue(Q); break;
case 3: EnQueue(Q); break;
case 4: QueueLength(Q); break;
case 5: LocateElem(Q); break;
case 6: DisPlay(Q); break;
case 7:cout<<"谢谢使用!"<
本文档为【栈和队列实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。