您的位置:首页 > 其它

顺序队列的基本操作

2014-02-11 21:56 351 查看
#include <stdio.h>
#include <stdlib.h>
//#include <iostream>
#define MAXSIZE 100
#define OK 1
#define TRUE 1
#define FALSE 0
#define ERROR 0

//using namespace std;

typedef struct
{
int data[MAXSIZE];
int front;      // 头指针
int rear;       //尾指针
}SqQueue;

int initQueue(SqQueue &Q);//初始化队列
int ClearQueue(SqQueue &Q);//清空队列
int QueueEmpty(SqQueue Q);//判断队空
int QueueLength(SqQueue Q);//取队列长度
int GetheadQueue(SqQueue Q,int &e);//取队列对头元素
int InQueue(SqQueue &Q,int x);//入队操作
int DeQueue(SqQueue &Q);//出队操作
int QueueTraverse(SqQueue Q);//遍历队列

int main()
{
printf("Hello World!\n");

SqQueue Q;
int m;
int i,leng;
int kk,flag;
initQueue(Q);
printf("入队顺序:\n");
for(i=1;i<=10;i++)
{
InQueue(Q,i);//入队
printf("%d ",i);
}
printf("\n");
flag=QueueEmpty(Q);
leng=QueueLength(Q);
if(flag==1)
printf("队列空,队列长度为: 0\n");
else
printf("队列不空,队列长度为:%d\n",leng);

QueueTraverse(Q);//遍历队列

flag=QueueEmpty(Q);
leng=QueueLength(Q);
if(flag==1)
printf("队列空,队列长度为: 0\n");
else
printf("队列不空,队列长度为:%d\n",leng);

GetheadQueue(Q,m);
printf("队列顶部元素为:%d\n",m);

for(i=0;i<10;i++)
{
kk=DeQueue(Q);
printf("%d ",kk);//出队
}

ClearQueue(Q);
printf("\n");
flag=QueueEmpty(Q);
leng=QueueLength(Q);
if(flag==1)
printf("队列空,队列长度为: 0\n");
else
printf("队列不空,队列长度为:%d\n",leng);

return 0;
}

int initQueue(SqQueue &Q)//初始化队列
{
Q.front=0;
Q.rear=0;
return OK;
}

int ClearQueue(SqQueue &Q)//清空队列
{
Q.front=Q.rear=0;
return OK;
}

int QueueEmpty(SqQueue Q)//判断队空
{
if(Q.front==Q.rear)
return TRUE;
else
return FALSE;
}

int QueueLength(SqQueue Q)//取队列长度
{
return(Q.rear-Q.front+MAXSIZE)%MAXSIZE;
}

int GetheadQueue(SqQueue Q,int &e)//取队列对头元素
{
if(Q.front==Q.rear)
return ERROR;
e=Q.data[Q.front];
return OK;
}

int InQueue(SqQueue &Q,int x)//入队操作
{
if(Q.front==MAXSIZE)
printf("溢出!\n");
else
{
Q.data[Q.rear]=x;
(Q.rear)++;
}
return 1;
}

int DeQueue(SqQueue &Q)//出队操作
{
int x;
if(Q.front==Q.rear)
printf("下溢出!\n");
else
{
x=Q.data[Q.front];
(Q.front)++;    //front指针后移
}
return x;
}

int QueueTraverse(SqQueue Q)//遍历队列
{
int i;
i=Q.front;
while(i!=Q.rear)
{
printf("%d ",Q.data[i]);
i=(i+1)%MAXSIZE;
}
printf("\n");
return OK;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: