java資料結構佇列操作一覽
阿新 • • 發佈:2018-12-12
package 演算法.佇列; import java.util.Scanner; class Data { String name; int age; } class SQtype { static final int Queuelen=15; Data data[]=new Data[Queuelen]; int head;//隊首 int tail;//隊尾 //初始化 SQtype SQInt() { SQtype q; if ((q=new SQtype())!=null) { q.head=0; q.tail=0; return q; } else { return null; } } //判斷空佇列 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; } //清空佇列 void SQTypeClear(SQtype q) { q.head=0; q.tail=0; } //釋放空間 void SQTyprFree(SQtype q) { if (q!=null){ q=null; } } //入佇列 int SQTyprAdd(SQtype q,Data data) { if (q.tail==Queuelen) { System.out.println("佇列已滿"); return 0; } else { q.data[++q.tail]=data; return 1; } } //出佇列 Data SQTypeout(SQtype q) { if (q.head==q.tail) { System.out.println("佇列為空,無法進行出佇列"); System.exit(0); } else { return q.data[q.head++]; } return null; } //計算佇列長度 int SQTypelen(SQtype q) { int temp=0; temp=q.tail-q.head; return temp; } //顯示佇列結點 Data SQShow(SQtype q) { if (SQTypeIsEmpty(q)==1) { System.out.println("這是一個空佇列"); return null ; } else { return q.data[q.head]; } } } public class duilie { public static void main(String[] args) { SQtype st=new SQtype(); Data data1; Scanner input=new Scanner(System.in); SQtype stack=st.SQInt();//初始化 System.out.println("佇列入隊操作"); System.out.println("請輸入佇列姓名年齡"); do { Data data=new Data(); data.name=input.next(); data.age=input.nextInt(); if (data.name.equals("0")) { break; } else { st.SQTyprAdd(stack,data); } }while (true); String temp="1"; System.out.println("輸入非零字元進行出佇列"); temp=input.next(); while (!temp.equals("0")) { data1=st.SQShow(stack); System.out.println("出佇列資料為"+data1.name+" "+data1.age); temp=input.next(); } System.out.println("測試結束"); st.SQTyprFree(stack); } }