/*******************************************************JAVA*************************************************/
JAVA封装顺序队列的操作类
测试数据
public class SeqQueue_value {
public static void main(String[] args) {
SeqQueue_value sq=new SeqQueue_value();
Que que=null;
//初始化队列
que=sq.initQue(que);
//判断队列是否为空
System.out.println(sq.isQueEmpty(que));
//入队
for(int i=0;i<10;i++){
sq.inQue(que, 1993+i);
}
sq.printQueue(que);
//出队
System.out.println(sq.outQueue(que));
System.out.println(sq.outQueue(que));
System.out.println(sq.outQueue(que));
}
/**
* 初始化队列
* @param que
* @return
*/
private Que initQue(Que que){
if(que!=null) System.out.println("队列已存在");
que=new Que();
que.front=0;
que.rear=0;
return que;
}
/**
* 判断队列是否为空
* @param que
* @return
*/
private boolean isQueEmpty(Que que){
if(que.front==que.rear) return true;
return false;
}
/**
* 入队
* @param que
* @param e 元素
* @return
*/
private boolean inQue(Que que,int e){
if(que.rear==que.QueueSize) return false; //队列已满
que.ch[que.rear]=e;
que.rear+=1;
return true;
}
/**
* 出队
* @param que
* @return
*/
private int outQueue(Que que){
if(que.front==que.rear) return -1; //空队列
int e=que.ch[que.front];
que.front+=1;
return e;
}
/**
* 遍历队列
* @param que
*/
private void printQueue(Que que){
for (int i=0;i<que.QueueSize;i++) {
System.out.print(que.ch[i]+" ");
}
System.out.println();
}
/**
* 节点类
* @author GetWay
*/
private class Que{
private int QueueSize=9;
private int[] ch=new int[QueueSize];
private int front,rear;
}
}
/************************************C***************************************/
SeqQueue.h 头文件引入
/*************C******SeqQueue.h*********/
typedef char DataType;
#define QueueSize 40
typedef struct Squeue
{
DataType queue[QueueSize];
int front,rear;
}SeqQueue;
//初始化
void InitQueue(SeqQueue *SQ)
{
SQ->front=0;
SQ->rear=0;
}
//判断队列是否为空
int QueueEmpty(SeqQueue SQ)
{
if(SQ.front==SQ.rear)
{
return 1;
}
else
{
return 0;
}
}
//入队
int EnterQueue(SeqQueue *SQ,DataType x)
{
if(SQ->rear==QueueSize-1)
{
return 0;
}
else
{
SQ->queue[SQ->rear]=x;
SQ->rear+=1;
return 1;
}
}
//出队
int DeleteQueue(SeqQueue *SQ,DataType *e)
{
if(SQ->front==SQ->rear)
{
return 0;
}
else
{
*e=SQ->queue[SQ->front];
SQ->front+=1;
return 1;
}
}
SeqQueue.c 主函数调用
#include <stdio.h>
#include "SeqQueue.h"
int main(void)
{
SeqQueue Q;
char str[]="ABCDEFGH";
char x;
int i,length=8;
//初始化
InitQueue(&Q);
//插入
for(i=0;i<length;i++)
{
EnterQueue(&Q,str[i]);
}
//删除
DeleteQueue(&Q,&x);
printf("出队列的元素:%c\n",x);
//出队
printf("顺序队列中的元素:");
if(!QueueEmpty(Q))
{
for(i=Q.front;i<Q.rear;i++)
{
printf("%c",Q.queue[i]);
}
}
printf("\n");
system("pause");
return 0;
}