数据结构实验报告实现队列和栈的各种算法及操作.doc
文本预览下载声明
佛山科学技术学院
实 验 报 告
课程名称 数据结构
实验项目 实现队列和栈的各种算法及操作
专业班级 10网络工程2 姓 名 张珂卿 学 号 2010394212
指导教师 成 绩 日 期 2011年11月9日
一、目的和要求
通过本实验,熟悉队列、栈的结构特点;
熟悉队列、栈结构上的操作与算法的实现。
?
二、实验内容
队列的基本操作和应用
2. 栈的基本操作和应用。
?
三、仪器、设备和材料
适合实验要求的计算机系统
2. C语言编程平台。
?
四、实验原理
队列与栈是一种操作受限制的线性表,在了解线性表的基本原理的基础上,理解与完成此项实验。
#include stdio.h
#include windows.h
#include malloc.h
#define MAXSIZE 50
typedef struct QNode{
char data; //数组元素的存储结构
}QNode,*QLink;
typedef struct Queue{
QNode* front;
QNode* rear;
int size;
}*QueueArray;
/****************************
初始化队列数组
分配存储空间
初始化队头与队尾
****************************/
int InitQueue(QueueArray queue)
{
QLink ql;
printf(\n初始化队列:);
ql= (QNode*)malloc(MAXSIZE*sizeof(QNode)); //分配存储空间
if(!ql)
{
printf(MEMERY ERROR!);
return 0;
}
queue-front = queue-rear = ql; //初始化队头指针与队尾指针
queue-size = 0;
return 1;
}
/*********************************
入队操作
队满条件:queue-size+1 == MAXSIZE
*********************************/
int EnQueue(QueueArray queue)
{
if((queue-size+1)MAXSIZE) //是否队满
{
printf(已经超出了预设最大队列长度%d!,MAXSIZE);
return 0;
}
fflush(stdin); //清理标准输入流
printf(请输入入队元素:);
scanf(%c,queue-rear-data);
queue-rear = (queue-rear)++; //队尾元素移动
queue-size++; //队长度增加
return 1;
}
/******************************
出队操作
队空条件:queue-size == 0
******************************/
int DeQueue(QueueArray queue)
{
if(0 == queue-size) //是否队空
{
printf(注意:队列已经为空!\n);
return 0;
}
printf(队头元素为:%c\n,queue-front-data);
(queue-front)++; //队头元素移动
queue-size--; //队长度减少
return 1;
}
void main()
{
QueueArray queue = (QueueArray)malloc(sizeof(QueueArray));
int choose;
InitQueue(queue);
while(1){
printf(\n请选择操作:1.入队\t2.出队\t3.退出程序\t选择:);
scanf(%d,choose);
//fflush(stdin);
if(choose!=1choose!=2) break;
switch(choose) //选择操作
{
case 1:
EnQueue(queue); //入队操作
break;
case 2:
DeQueue(queue); //出队操作
break;
default:
显示全部