队列写杨辉三角(拿两个队列写的。。。。


参考代码1:(用两个队列写的)

package queue;

public class queue {
  public int msize;
  public int front;
  public int rear;
  public int [] queue;
  public queue(int size)
  {
	 msize=size;
	 queue=new int[msize];
	 front=0;
	 rear=0;
  }
  public queue()
  {
	  
  }
  public boolean isEmpty()
  {
	  if(front==rear){
		  return true;
	  }
	  else
	  {
		  return false;
	  }
  }
  public boolean isFull()
  {
	  if((rear+1)%msize==front)
	  {
		  return true;
	  }
	  else
	  {
		  return false;
	  }
  }
  public void enQueue(int elem)
  {   
	 
	  if((rear+1)%msize!=front)
		  {
		  queue[rear]=elem;
		  rear=(rear+1)%msize;
		  }
	  else
	  {
		  System.out.println("队列已满");
	  }
  }
  public void deQueue()
  {
	  if(front!=rear)
	  {   
		 // int elem=queue[front];
		  queue[front]=0;
		  front=(front+1)%msize;
		 
	  }
	  else
	  {
		  System.out.println("队列是空的");
		 // return 0;
	  }
  }
  public void PrintQueue()
  {   
	  int i=front+1;
	  while(i!=rear)
	  {
		  System.out.print(queue[i]+" ");
		  i=(i+1)%msize;
	  }
	  System.out.println();
  }
}

package queue;

public class yanghui {
    public static void main(String [] args)
    {
    	int n=6;
    	queue q1=new queue(3);
    	queue q2=new queue(4);
    	q1.enQueue(0);
		q1.enQueue(1);
		q1.enQueue(0);
    	for(int i=0;i<n;i++)
    	{
    	      q2.enQueue(0);
    	      while(q1.front!=q1.rear)
    	      {
    	    	  q2.enQueue(q1.queue[q1.front]+q1.queue[q1.front+1]);
    	    	  q1.deQueue();
    	      }
    	  for(int j=0;j<n-i;j++)System.out.print(" ");   
    	  q2.PrintQueue();
    	  q1=new queue(i+4);
    	  q1=q2;
    	  q2=new queue(i+5);
    	  
    	}
    	
    }
}

输出结果:

      1 1 
     1 2 1 
    1 3 3 1 
   1 4 6 4 1 
  1 5 10 10 5 1 
 1 6 15 20 15 6 1 

好的,我可以为您解答关于C语言循环队列杨辉三角的问题。首先,让我们明确一下循环队列的基本概念和操作。循环队列是一种环形数据结构,它允许在队列两端插入和删除元素,并且可以循环利用队列空间。循环队列实现一般使用数组来存储队列元素,然后通过定义队列头和队列尾指针来实现队列的插入和删除操作。 接下来,让我们来看看如何使用循环队列实现杨辉三角杨辉三角是指每个数是它上方两数之和的数字三角形。例如,下面就是一个5行的杨辉三角: ``` 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 ``` 我们可以利用循环队列实现杨辉三角的生成,具体步骤如下: 1. 初始化循环队列,将第一行的1入队。 2. 从队列中取出第一行的元素,计算出下一行的元素,然后将它们依次入队。 3. 重复步骤2,直到生成指定行数的杨辉三角为止。 以下是使用C语言实现循环队列杨辉三角的代码: ``` #include <stdio.h> #define MAX_SIZE 100 // 循环队列结构体 struct Queue { int data[MAX_SIZE]; int front; // 队列头指针 int rear; // 队列尾指针 }; // 初始化队列 void init_queue(struct Queue *q) { q->front = q->rear = 0; } // 判断队列是否为空 int is_empty(struct Queue *q) { return q->front == q->rear; } // 入队 void enqueue(struct Queue *q, int x) { if ((q->rear + 1) % MAX_SIZE == q->front) { printf("Queue is full.\n"); return; } q->data[q->rear] = x; q->rear = (q->rear + 1) % MAX_SIZE; } // 出队 int dequeue(struct Queue *q) { if (is_empty(q)) { printf("Queue is empty.\n"); return -1; } int x = q->data[q->front]; q->front = (q->front + 1) % MAX_SIZE; return x; } // 生成杨辉三角 void generate_yh_triangle(int n) { struct Queue q; init_queue(&q); enqueue(&q, 1); for (int i = 1; i <= n; ++i) { int pre = 0; // 上一行的元素 for (int j = 0; j < i; ++j) { int x = dequeue(&q); // 取出上一行的元素 int y = pre + x; // 计算当前行的元素 printf("%d ", y); enqueue(&q, y); // 入队当前行的元素 pre = x; // 更新上一行的元素 } printf("\n"); enqueue(&q, 1); // 最后一个元素是1,入队 } } int main() { int n; printf("Please enter the number of rows: "); scanf("%d", &n); generate_yh_triangle(n); return 0; } ``` 以上就是使用C语言循环队列杨辉三角的方法和代码。希望能对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值