学习队列,一个小题目是输出杨辉三角
import java.util.ArrayDeque;
import java.util.Queue;
public class Mapdemo {
/*
* name:print 杨辉三角
* author:suju
* date:2012-9-18
*
* 输出杨辉三角,通过队列输出,在列队头补充0来方便计算,当输出到0,就表示换一行
* */
/*example*/
public static void main(String[] args) {
printsan(6);
}
/*输出杨辉三角*/
public static void printsan(int size)
{
Queue<Integer> queue=new ArrayDeque<Integer>(); /*初始化一个队列*/
queue.add(0);
queue.add(1); /*初始化一个初始值*/
int q1,q2; /*初始化变量*/
for (int i=0;i<size;i++)
{
queue.add(0); /*添加一个0在列尾用于计算方便*/
for (int j=size;j>i;j--){
System.out.print(" ");
} /*输出几个空格,规范下格式---太多行效果不好*/
do{
q1=queue.poll(); /*将第一个数出列,并返回值,第一次正好出列 队列头0*/
q2=queue.peek(); /*获取队列头数据,不将数据出列*/
System.out.print(q2!=0?q2+" ":""); /*打印,当数不是0时*/
queue.add(q1+q2); /*将计算的数入列*/
}while (q2!=0); /*当队列头为0时,循环结束*/
System.out.println(); /*打印一个换行*/
}
queue.clear(); /*清除队列*/
}
}