java数据结构(三)——队列

  队列结构是从数据运算来分类的,也就是说队列结构具有特殊的运算规则。从数据运算角度讲,队列结构是按照“先进先出”(First in First Out, FIFO)的原则处理结点数据的。队列是一种线性结构,从存储角度分可分为以下两种:

1.顺序队列 2.链式队列

基本操作:

1.入队列:将一个元素添加到队尾(相当于到队列最后排队等候)。

2.出队列:将队头元素取出,同时删除该元素,使后一个元素成为队头。

下面是数据结构:

1.数据定义

class DATA
{
    String name;
    int age;
}

class SQType
{
    static final int QUEUELEN=15;
    DATA[] data=new DATA[QUEUELEN]; 					//队列数组 
    int head; 								//队头 
    int tail; 								//队尾 
 }

2.队列初始化

SQType SQTypeInit()
    {
    SQType q;

        if((q=new SQType())!=null) 		//申请内存 
        {
            q.head = 0;						//设置队头 
            q.tail = 0;							//设置队尾 
            return q;
        }
    	else
    	{
            return null; 						//返回空
    	}
    }

3.判断队列是否已满/空

int SQTypeIsEmpty(SQType q)  				//判断空队列
    {
    	int temp=0;
    	if(q.head==q.tail)
    		temp=1;
        return (temp);
    }

    int SQTypeIsFull(SQType q)					// 判断满队列
    {
    	int temp=0;
    	if(q.tail==QUEUELEN)
    		temp=1;
        return (temp);
    }

4.清空队列+释放空间

void SQTypeClear(SQType q)  				//清空队列 
    {
        q.head = 0;							//设置队头 
        q.tail = 0;								//设置队尾 
    }

    void SQTypeFree(SQType q) 					//释放队列
    {
        if (q!=null)
    	{
           q=null;
    	}
    }

5.入/出队列

int InSQType(SQType q,DATA data)			//入队列
    {	
        if(q.tail==QUEUELEN)
        { 
            System.out.print("队列已满!\n");
            return(0);
        }
    	else
    	{
            q.data[q.tail++]=data;				//将元素入队列
            return(1);
        }
    }

    DATA4 OutSQType(SQType q) 				//出队列
    {
        if(q.head==q.tail)
        {
            System.out.print("\n队列已空!操作失败!\n");
            
            System.exit(0);
        }
    	else
    	{
            return q.data[q.head++];
        }
		return null;
    }

6.读取结点数据

DATA PeekSQType(SQType q) 				//读结点数据
    {
        if(SQTypeIsEmpty(q)==1)
        {
            System.out.print("\n空队列!\n");
            return null; 
        }
    	else
    	{
            return q.data[q.head];
        }
    }

7.计算队列长度

 int SQTypeLen(SQType q) 					//计算队列长度 
    {
    	int temp;
    	temp=q.tail-q.head;
        return (temp);
    }
  队列也算是一种基础的数据结构,在以后数的遍历算法以及后续的很多东西都会用到。

猜你喜欢

转载自blog.csdn.net/h9f3d3/article/details/51704689