什么是队列结构:
代码实现
/** * @PackageName * @author: * @date:2022/7/29 */ public class QueueTable { public static void main(String[] args){ SQType sq = new SQType(); DATA4 data1 ; Scanner input = new Scanner(System.in); SQType queue = sq.SQInit(sq); System.out.println("入栈队列操作:请输入:姓名,年龄"); do { DATA4 data = new DATA4(); data.name=input.next(); if (data.name.equals("0")){ break; }else { data.age = input.nextInt(); queue.InSQType(queue,data); } }while (true); String temp = "1"; System.out.println("出队操作,按任意非0键出队列操作"); temp = input.next(); while (!temp.equals("0")){ data1 = queue.OutSQType(queue); System.out.println("出队信息:"+data1.name+data1.age); temp = input.next(); } System.out.println("测试结束"); queue.SQFree(queue); } } /** * 数据元素 */ class DATA4{ String name; int age; } /** * 队列结构 */ class SQType{ static final int QUEUELEN = 50; //队列数组,用来存储数据元素 DATA4[] data = new DATA4[QUEUELEN]; //队头 用来操作队列 int head; //队尾 用来操作队列 int tail; /** * 初始化队列 * @param * @return */ SQType SQInit(SQType q){ if (q!= null){ head = 0; tail = 0; return q; } return null; } /** * 判断队列是否空 * @param q * @return */ int SQIsEmpty(SQType q){ if (q.head==q.tail){ return 1; } return 0; } /** * 判断队列是否满 * @param q * @return */ int SQIsFull(SQType q){ if (q.tail==QUEUELEN){ return 1; } return 0; } /** * 清空队列 * @param q */ void SQClear(SQType q){ q.head=0; q.tail=0; } /** * 释放队列存储空间 * @param q */ void SQFree(SQType q){ if (q != null){ q=null; } } /** * 入队 * @param q * @param data * @return */ int InSQType(SQType q,DATA4 data){ if (q.tail == QUEUELEN){ System.out.println("队列已经满了"); return 0; }else { //先使用再+1 ++在前是先自己+1,再使用,++在后是先使用在+1 q.data[q.tail++] = data; return 1; } } /** * 出队 * @param q * @return */ DATA4 OutSQType(SQType q){ if (q.head == q.tail){ System.out.println("空的队列"); System.exit(0); } //先使用再+1 ++在前是先自己+1,再使用,++在后是先使用在+1 return q.data[q.head++]; } /** * 读节点数据 * @param q * @return */ DATA4 PeektSQType(SQType q){ if (SQIsEmpty(q)==1){ System.out.println("空的队列"); return null; } return q.data[q.head]; } int SQLen(SQType q){ return q.tail-q.head; } }
通过理论,实践相结合,将更好掌握队列的知识,并能够很好应用