数据结构栈和队列实验报告
Push(s,'e');
printf("栈s为%s\n",(StackEmpty(s)?"空":"非空"));
printf("栈的长度=%d\n",StackLength(s));
printf("输出从栈顶到栈底元素:");
DispStack(s);
printf("输出出栈序列:");
while(!StackEmpty(s))
}
注:空间不够,可以增加页码。
if (enQueue(q,'b')==0) printf("队满,不能入队\n");
if (enQueue(q,'c')==0) printf("队满,不能入队\n");
if (deQueue(q,e)==0) printf("队空,不能出队\n");
else printf("出队一个元素%c\n",e);
(6)输出从栈顶到栈底元素;
(7)输出出栈序列;
(8)判断栈s是否非空;
(9)释放栈。
编写一个程序algo3-3.cpp,实现顺序环形队列的各种基本运算,并在此基础上设计一个主程序并完成如下功能:
(1)初始化队列q;
(2)判断队列q是否非空;
(3)依次进队列a,b,c;
(4)出队一个元素,输出该元素;
return 1;
}
void ClearStack(SqStack * &s)
{
free(s);
}
int StackLength(SqStack *s)
{
return(s->top+1);
}
int GetTop(SqStack *s,ElemType &e)
{ if(s->top==-1)
return 0;
#include <malloc.h>
emType;
typedef struct
{ ElemType data[maxsize];
int front,rear;
} SqQueue;
void InitQueue(SqQueue *&q)
{ if(s->top==maxsize-1)
return 0;
s->top++;
s->data[s->top]=e;
return 1;
}
int Pop(SqStack *&s,ElemType &e)
{ if(s->top==-1)
return 0;
e=s->data[s->top];
s->top--;
printf("初始化栈s\n");
InitStack(s);
printf("栈s为%s\n",(StackEmpty(s)?"空":"非空"));
printf("依次进栈元素a,b,c,d,e\n");
Push(s,'a');
Push(s,'b');
Push(s,'c');
Push(s,'d');
(5)输出队列q的元素个数;
(6)依次进队列元素d,e,f;
(7)输出队列q的元素个数;
(8)输出出队序列;
(9)释放队列。
三、实验预习内容
栈的顺序存储结构及其基本运算实现(初始化栈,销毁栈,求栈的长度,判断栈是否为空,进栈,取栈顶元素,显示栈中元素)
队列的顺序存储结构及其基本运算实现(初始化队列,销毁队列,判断队列是否为空,入队列,出队列)
printf("队列q元素个数=%d\n",QueueLength(q));
if (enQueue(q,'d')==0) printf("队满,不能入队\n");
if (enQueue(q,'e')==0) printf("队满,不能入队\n");
if (enQueue(q,'f')==0) printf("队满,不能入队\n");
{ Pop(s,e);
printf("%c",e);
}
printf("\n");
printf("栈s为%s\n",(StackEmpty(s)?"空":"非空"));
printf("释放栈。\n");
ClearStack(s);
}
3-3
#define maxsize 100
#include <stdio.h>
e=q->data[q->front];
return 1;
}
int QueueLength(SqQueue *q)
{ return (q->rear-q->front+maxsize)%maxsize;
}
void ClearQueue(SqQueue *&q)
{
free(q);
}
int main(){
(4)灵活运用栈和队列这两种数据结构解决一些综合应用问题。
二、实验项目摘要
编写一个程序algo3-1.cpp,实现顺序栈的各种基本运算,并在此基础上设计一个主程序并完成如下功能:
(1)初始化栈s;
(2)判断栈s是否非空;
(3)依次进栈元素a,b,c,d,e;
(4)判断栈s是否非空;
(5)输出栈长度;
printf("队列q元素个数=%d\n",QueueLength(q));
printf("输出队列序列:");
while(!QueueEmpty(q))
{ deQueue(q,e);
printf("%c",e);
}
printf("\n");
printf("释放队列\n");
ClearQueue(q);
return 0;
q->rear=(q->rear+1)%maxsize;
q->data[q->rear]=e;
return 1;
}
int deQueue(SqQueue *&q,ElemType &e)
{ if(q->front==q->rear)
return 0;
q->front=(q->front+1)%maxsize;
} SqStack;
void InitStack(SqStack * &s)
{ s=(SqStack *)malloc(sizeof(SqStack));
s->top=-1;
}
int StackEmpty(SqStack *s)
{
return(s->top==-1);
}
int Push(SqStack *&s,ElemType e)
三、实验结果与分析
3-1
#define maxsize 100
#include <stdio.h>
#include <malloc.h>
using namespace std;
typedef char ElemType;
typedef struct
{ ElemType data[maxsize];
int top;
SqQueue *q;
ElemType e;
printf("初始化队列q\n");
InitQueue(q);
printf("队列q为%s\n",(QueueEmpty(q)?"空":"非空"));
printf("依次进队元素a,b,c\n");
if (enQueue(q,'a')==0) printf("队满,不能入队\n");
{ q=(SqQueue *)malloc(sizeof(SqQueue));
q->front=q->rear=0;
}
int QueueEmpty(SqQueue *q)
{
return(q->front==q->rear);
}
int enQueue(SqQueue *&q,ElemType e)
{ if((q->rear+1)%maxsize==q->front)
e=s->data[s->top];
return 1;
}
void DispStack(SqStack *s)
{ int i;
for(i=s->top;i>=0;i--)
printf("%c",s->data[i]);
printf("\n");
}
int main(){
SqStack *s;
ElemType e;
《数据结构》课程实验报告
实验名称
栈和队列
实验序号
实验日期
姓名
院系
班级
学号
专业
指导教师
成绩
教师评语
一、实验目的和要求