队列的存储结构为顺序存储为顺序队列。其和顺序栈其实是类似的。队列为“先入先出”,栈为“先入后出”。 顺序栈建立时,需要一个栈顶指针,同样的队列的建立也创建一个队首指针front和一个队尾指针rear。初始化时,front=rear=-1。
代码如下:
// SeqQueue.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
using namespace std;
typedef char type;
#define MaxSize 100
//顺序队列结点
typedef struct queue
{
type data[MaxSize];
int front; //队首指针
int rear; //队尾指针
}Queue,*SeqQueue;
//初始化队列
void InitQueue(SeqQueue q)
{
q->front=-1;
q->rear=-1;
}
//入队操作
bool EnterQueue(SeqQueue q,type data)
{
//判断队列是否满
if(MaxSize-1==q->rear)
{
cout<<"队列已满!"<<endl;
return false;
}
q->data[++q->rear]=data;
return true;
}
//出队操作 返回出队元素
type OutQueue(SeqQueue q)
{
//判断队列是否为空
if(q->rear==q->front)
{
cout<<"队列为空!"<<endl;
exit(-1);
}
type temp=q->data[q->front+1];
q->front++;
return temp;
}
//打印队列
void PrintQueue(SeqQueue q)
{
if(q->rear==q->front)
{
exit(-1);
}
for(int i=q->front+1;i<=q->rear;i++)
{
cout<<q->data[i]<<" ";
}
cout<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
type a[5]={'a','b','c','e','f'};
Queue q;
InitQueue(&q);
for(int i=0;i<5;i++) //入队操作
EnterQueue(&q,a[i]);
PrintQueue(&q);
//出队操作
cout<<OutQueue(&q)<<endl;
PrintQueue(&q);
return 0;
}
运行结果: