队列结构是一种常见的数据结构,从数据的逻辑结构来看是线性结构,从存储结构来说分顺序和链式存储。且队列的两个基本操作是入队列和出队列,在队头进行出队列操作,在队尾进行入队列操作.
队列中操作的对象:
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.数据情况、释放内存
越来越淡静了...在想想这段代码,确实写的好.