基础-栈队列简单测试
生活随笔
收集整理的這篇文章主要介紹了
基础-栈队列简单测试
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
package com.nxz.blog.otherTest;import java.util.Queue;
import java.util.Stack;
import java.util.concurrent.LinkedBlockingQueue;public class Test02 {/*** 撲克游戲——“小貓釣魚”。游戲的規則是這樣的:將一副撲克牌平均分成兩份,每人拿一份。小哼先拿出手中的* 第一張撲克牌放在桌上,然后小哈也拿出手中的第一張撲克牌,并放在小哼剛打出的撲克牌* 的上面,就像這樣兩人交替出牌。出牌時,如果某人打出的牌與桌上某張牌的牌面相同,即* 可將兩張相同的牌及其中間所夾的牌全部取走,并依次放到自己手中牌的末尾。當任意一人* 手中的牌全部出完時,游戲結束,對手獲勝*/private static Queue<Integer> q1 = new LinkedBlockingQueue<Integer>();private static Queue<Integer> q2 = new LinkedBlockingQueue<Integer>();private static Stack<Integer> stack = new Stack<>();/*** 以上規則要求可以使用兩個隊列來表示每個人手中的牌,一個棧表示桌面上的牌,一個數組來判斷時候存在相同的牌** @param args*/public static void main(String[] args) {//初始化兩個隊列,也就是每個人手中的牌int[] arr1 = new int[]{2, 4, 1, 2, 5, 6};int[] arr2 = new int[]{3, 1, 3, 5, 6, 4};for (int i : arr1) {q1.add(i);}for (int i : arr2) {q2.add(i);}//初始化判斷桌面上有牌的數組,大小為10,因為本次測試中不同牌的個數為最多為9個int[] book = new int[10];//當向桌上扔牌時,就表示向stack中入棧,同時在數組中索引為牌的值的位置加1,表示桌面上已經有這個牌了//循環扔牌while (!q1.isEmpty() && !q2.isEmpty()) {//定義一個臨時變量,表示當前扔的牌int temp;//stack彈出的int t;temp = q1.poll();if (book[temp] == 0) {stack.push(temp);book[temp] = 1;} else {//表示桌面上已經存在book[temp] = 0;q1.add(temp);while (!stack.isEmpty() && (t = stack.pop()) > 0) {book[t] = 0;q1.add(t);if (t == temp) {break;}}}if(q1.isEmpty()){break;}temp = q2.poll();if (book[temp] == 0) {stack.push(temp);book[temp] = 1;} else {//表示桌面上已經存在q2.add(temp);book[temp] = 0;while (!stack.isEmpty() && (t = stack.pop()) > 0) {book[t] = 0;q2.add(t);if (t == temp) {break;}}}if(q2.isEmpty()){break;}System.out.println();System.out.print("stack:");stack.stream().forEach(item -> {System.out.print(item);});}//判斷輸贏if(q1.isEmpty()){System.out.println("第二個人獲勝");Object[] objects = q2.toArray();for (Object object : objects) {System.out.print(object);}}if(q2.isEmpty()){System.out.println("第一個勝利");Object[] objects = q1.toArray();for (Object object : objects) {System.out.print(object);}}System.out.println();stack.stream().forEach(item -> {System.out.print(item);});}} 第二個人獲勝
1652341
34562
Process finished with exit code 0
?
總結
以上是生活随笔為你收集整理的基础-栈队列简单测试的全部內容,希望文章能夠幫你解決所遇到的問題。