- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构实验报告
----试验三循环队列的基本操作及应用
问题描述:
数据结构设计:#define MAXQSIZE 10 struct SqQueue(QElemType *base;Int front;int rear;};
数据结构设计:
#define MAXQSIZE 10 struct SqQueue
(
QElemType *base;
Int front;
int rear;
};
//最大队歹U长度
//初始化动态分配存储空间
//头指针,若队列不空,只想对列头元素 〃尾指针,若队列不空,指向队列尾元素的 //下一个位置
三、功能设计:
〃构造一个空队列Q〃销毁队歹0 Q,Q不再存在//将
〃构造一个空队列Q
〃销毁队歹0 Q,Q不再存在
//将Q活为空队列
〃若队列Q为空队列,WJ
//返回TRUE否贝U返回FALSE
//返回Q的元素个数,即队列长度
Status InitQueue(SqQueue &Q)
Status DestroyQueue(SqQueue &Q) Status ClearQueue(SqQueue &Q) Status QueueEmpty(SqQueue Q)
int QueueLength(SqQueue Q)
Status GetHead(SqQueue Q,QElemType &e)ff 队歹0不空,则用 e 返回 Q 的对
〃头元素,并返回OK,否则返回ERROR
Status EnQueue(SqQueue &Q,QElemType e糖入元素e为Q的新的队尾元素
Status DeQueue(SqQueue &Q,QElemType &e淅队歹0不空,则删除 Q 的队头
〃元素,用e返回其值,并返回
//OK,否贝U返回ERROR
Status QueueTraverse(SqQueue Q,void(*vi)(QElemType))// 队头到队尾依次
〃对队列Q中每个元素调用函数
//vi()。一旦vi失败,则操作失败
四、源程序:
// c1.h (程序名)
#include<string.h>
#include<ctype.h>
#include<malloc.h> // malloc()等
#include<limits.h> // INT_MAX 等
#include<stdio.h> // EOF(=A^ F6),NULL
#include<stdlib.h> // atoi()
#include<io.h> // eof()
#include<math.h> // floor(),ceil(),abs()
#include<process.h> // exit()
#include<iostream.h> // cout,cin
//函数结果状态代码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
// #define OVERFLOW -2因为在math.h中已定义OVERFLOW值为3,故去掉此
//
typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如 OK等
typedef int Boolean; // Boolean 是布尔类型,其值是 TRU攻 FALSE
// c3-3.h
#define MAXQSIZE 10
struct SqQueue
(
QElemType *base;
int front;
int rear;
};
#include"c1.h"
typedef int QElemType;
#include"c3-3.h"
Status InitQueue(SqQueue &Q)
( 〃构造一个空队列Q
Q.base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType));
if(!Q.base)//储存分配失败
exit(OVERFLOW);
Q.front=Q.rear=0;
return OK;
}
Status DestroyQueue(SqQueue &Q)
(//销毁队歹0 Q,Q不再存在
if(Q.base)
free(Q.base);
Q.base=NULL;
Q.front=Q.rear=0;
return OK;
Status ClearQueue(SqQueue &Q)
(//将Q活为空队列
Q.front=Q.rear=0;
return OK;
}
Status QueueEmpty(SqQueue Q)
(//若队列Q为空队列,则返回TREU否则返回FALSE
if(Q.front==Q.rear
文档评论(0)