标签:
一、什么是队列结构
一种线性结构,具有特殊的运算法则【只能在一端(队头)删除,在另一端(队尾)插入】。
分类:
基本操作:
二、准备数据
1 static final int QUEUELEN = 15; 2 3 class DATA{ 4 5 String name; 6 int age; 7 } 8 9 class SQType{ 10 DATA[] data = new DATA[QUEUELEN]; 11 int head; 12 int tail; 13 }
在类SQType中data为数据元素,head为队头序号,tail为队尾序号,当head为0时队为空,当tail为QUEUELEN时表示队列已满。
三、初始化队列
在使用队列前首先要创建个空队列,即初始化队列。
1 SQType SQTypeInit(){ 2 SQType q; 3 if((q=new SQType())!=null){ //申请内存 4 q.head = 0; 5 q.tail = 0; 6 return q; 7 } 8 else 9 { 10 return null; 11 } 12 }
四、判断空队列
1 int SQTypeIsEmpty(SQType q){ 2 int temp = 0; 3 if(q.head==q.tail) 4 { 5 temp = 1; 6 } 7 return temp; 8 }
五、判断满队列
1 int SQTypeIsFull(SQType q){ 2 int temp = 0; 3 if(q.tail==QUEUELEN) 4 temp = 1; 5 return temp; 6 }
六、请空队列
1 void SQTypeClear(SQType q){ 2 q.head = 0; 3 q.tail = 0; 4 }
七、释放空间
1 void SQTypeFree(SQType q){ 2 3 if(q!=null){ 4 q = null; 5 } 6 }
八、入队列
1 int InSQType(SQType q,DATA data){ 2 if(SQTypeIsEmpty(q)==1){ 3 System.out.println("队列已满,操作失败!"); 4 return 0; 5 } 6 else 7 { 8 q.data[q.tail++]=data; 9 return 1; 10 } 11 12 }
九、出队列
1 DATA OutSQType(SQType q){ 2 if(SQTypeIsEmpty(q)==1) 3 { 4 System.out.println("队列为空"); 5 return null; 6 } 7 else 8 { 9 return q.data[q.head++]; 10 } 11 return null 12 }
十、读取节点
1 DATA PeekSQType(SQType q){ 2 if(SQTypeIsEmpty(q)==1) 3 { 4 System.out.println("队列为空"); 5 return null; 6 } 7 else 8 { 9 return q.data[q.head]; 10 } 11 return null 12 }
十一、计算队列长度
1 int SQTypeLen(SQType q){ 2 int temp; 3 temp = q.tail - q.head; 4 return temp; 5 }
标签:
原文地址:http://www.cnblogs.com/whieenz/p/5361731.html