Java實現佇列結構的詳細程式碼
阿新 • • 發佈:2019-01-28
一、什麼是佇列結構
一種線性結構,具有特殊的運演算法則【只能在一端(隊頭)刪除,在另一端(隊尾)插入】。
分類:
- 順序佇列結構
- 鏈式佇列結構
基本操作:
- 入佇列
- 出佇列
二、準備資料
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時表示佇列已滿。
三、初始化佇列
在使用佇列前首先要建立個空佇列,即初始化佇列。
- 按符號常量QUEUELEN指定的大小申請一片記憶體空間用來儲存對列中的資料。
- 設定head=0和tail=0,表示一個空佇列。
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 }