数据结构与算法设计_顺序队列

/*******************************************************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; 
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值