`
Cb123456
  • 浏览: 63753 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

队列结构

阅读更多

  队列结构是一种常见的数据结构,从数据的逻辑结构来看是线性结构,从存储结构来说分顺序和链式存储。且队列的两个基本操作是入队列和出队列,在队头进行出队列操作,在队尾进行入队列操作.

 

 队列中操作的对象:

public class DATA4 {
	String name;
	int age;
}

 队列的基本操作:

 

public class SQType {
   
	static final int QUEUELEN=15;
	DATA4[] data=new DATA4[QUEUELEN];//队列数组
	int head;//队列头
	int tail;//队列尾
	
	/**
	 * 初始化队列
	 */
	SQType SQTypeInit(){
		SQType q;
		if((q=new SQType())!=null){
			q.head=0;//设置队头
			q.tail=0;//设置队尾
			return q;
		}else{
			return null;
		}
	}
	
	/**
	 * 判断空队列
	 */
	int SQTypeEmpty(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;
	}
	
	/**
	 * 清空队列
	 */
	void SQTypeClear(SQType q){
		q.head=0; //设置对头
		q.tail=0;//设置队尾
	}
	
	/**
	 * 释放内存
	 */
	void SQTypeFree(SQType q){
		if(q!=null){
			q=null;
		}
	}
	
	/**
	 * 入队列
	 */
	int InSQType(SQType q,DATA4 data){
		if(q.head==QUEUELEN){
			System.out.println("队列已经满了,操作失败");
			return 0;
		}else{
			q.data[q.tail++]=data;
			return 1;
		}
	}
	
	/**
	 * 出队列
	 */
	DATA4 OutSQType(SQType q){
		if(q.head==q.tail){
			System.out.println("队列已经为空");
			System.exit(0);
		}else{
			return q.data[q.head++];
		}
		return null;
	}
	
	/**
	 * 读取结点
	 */
	DATA4 PeekSQType(SQType q){
		if(SQTypeEmpty(q)==1){
			System.out.println("空队列");
			return null;
		}else{
			return q.data[q.head];
		}
	}
	
	/**
	 * 计算队列长度
	 */
	int SQTypeLen(SQType q){
		int temp;
		temp=q.tail-q.head;
		return temp;
	}
}

 

 看看就明白了,也就这么几句.

 从这个代码学到了:

 1.就是队列的一些基本操作

 2.++a,a++。用的确实巧妙,如果是我自己,应该不会那么写的

 3.数据情况、释放内存

 

 越来越淡静了...在想想这段代码,确实写的好.

 

6
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics