0
當我學習隊列時,發現了一些問題,這裏是我的代碼和結果。希望有人能幫我解決問題,謝謝! import java.util.Scanner;排隊的數據輸出
public class Test{
public static void main(String[] args){
SQType sq = new SQType();
Data data1;
Scanner in = new Scanner(System.in);
SQType s = sq.SQInit(); //初始化隊列
System.out.println("入隊列操作:");
System.out.println("輸入姓名 年齡進行操作:");
do{
Data data = new Data();
data.name = in.next();
data.age = in.nextInt();
if(data.name.equals("0")){
break;
}
else{
sq.InSQType(s,data);
}
}while(true);
String temp;
System.out.println("出隊列操作,按任意非0鍵繼續:");
temp = in.next();
while(!temp.equals("0")){
data1 = sq.OutSQType(s);
System.out.printf("出隊列的數據爲(%s %d)",data1.name, data1.age);
temp = in.next();
}
System.out.println("測試結束!");
sq.SQTypeFree(s);
}
}
class Data{
String name;
int age;
}
class SQType{
private static final int QUEUELEN = 15;
private Data[] data = new Data[QUEUELEN];
private int head;
private int tail;
SQType SQInit(){
SQType s;
if((s = new SQType()) != null){ //申請內存
s.head = 0; //設置隊頭
s.tail = 0; //設置隊尾
return s;
}
else{
return null;
}
}
int SQTypeIsEmpty(SQType s){ //判斷是否爲空隊列
int temp = 0;
if(s.head == s.tail){
temp = 1;
}
return temp;
}
int SQTypeIsFull(SQType s){ //判斷是否爲滿隊列
int temp = 0;
if(s.tail == QUEUELEN){
temp = 1;
}
return temp;
}
void SQTypeClear(SQType s){ //清空隊列
s.head = 0;
s.tail = 0;
}
void SQTypeFree(SQType s){
if(s != null){
s = null;
}
}
int InSQType(SQType s, Data data){ //數據入隊列
if(s.tail == QUEUELEN){
System.out.println("隊列已滿!操作失敗!");
return 0;
}
else{
s.data[s.tail++] = data;
return 1;
}
}
Data OutSQType(SQType s){ //數據出隊列
if(s.head == 0){
System.out.println("隊列爲空!操作失敗!");
return null;
}
else {
return s.data[s.head++];
}
}
Data PeekSQType(SQType s){ //讀取隊列數據
if(SQTypeIsEmpty(s) == 1){
System.out.println("空隊列!");
return null;
}
else{
return s.data[s.head];
}
}
int SQTypeLen(SQType s){ //計算隊列長度
int temp;
temp = s.tail - s.head;
return temp;
}
}
可能的重複[什麼是NullPointerException,以及如何解決它?](http://stackoverflow.com/questions/218384/what- is-a-nullpointerexception-and-how-do-i-fix-it) –
你可以把你的代碼作爲文本而不是這些圖片嗎? –