顺序队列,链队列的基本操作
一、实验目的
1.深入了解队列的定义和特性。
2.掌握队列的数组表示、链表表示以及相应操作的实现,巩固对这两种结构的构造方法的掌握。
3. 会灵活运用队列结构解决某些实际问题。
二、实验内容
- 顺序队列的基本操作的实现(初始化、赋值、取值、插入、删除等)。
- 链队列的基本操作的实现(初始化、赋值、取值、插入、删除等)。
- 舞伴问题(参加教材相关描述)。
三、实验要求
-
在本题下面提交源程序和实验运行结果截图。
-
顺序队列的基本操作的实现(初始化、赋值、取值、插入、删除等)。
#include<cstdio>
#include<iostream>
using namespace std;
#define ERROR 0
#define OK 1
#define OVERFLOW -1
#define MAXSIZE 100
typedef int QElemType;
typedef int Status;
typedef struct {
QElemType *base;
int front;
int rear;
} SqQueue;
Status InitQueue(SqQueue &Q) {
Q.base = new QElemType[MAXSIZE];
if(!Q.base) {
cout<<"储存分配失败"<<endl;
exit(OVERFLOW);
}
Q.front=Q.rear=0;
return OK;
}//初始化
Status EnQueue(SqQueue &Q,QElemType e) {
if((Q.rear+1)%MAXSIZE==Q.front)
return ERROR;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXSIZE;
return OK;
}//插入新元素
QElemType GetHead(SqQueue Q) {
if(Q.front!=Q.rear)
return Q.base[Q.front];
}//取元素
Status DeQueue(SqQueue &Q,QElemType &e) {
if(Q.front==Q.rear) return ERROR;
e=Q.base[Q.front];
Q.front=(Q.front+1)%MAXSIZE;
return OK;