精华内容
下载资源
问答
  • 利用队列打印杨辉三角形

    千次阅读 2020-10-16 20:08:15
    问题 A: 打印杨辉三角 题目描述 输入 输入一行,为要打印杨辉三角的行数 输出 输出杨辉三角,输出格式如图,其中每两个元素之间的空格数为3.最后一行的第一个‘1’之前空2格 样例输入 5 样例输出 1 1 1 1 2 1 ...

    问题 A: 打印杨辉三角
    题目描述

    输入
    输入一行,为要打印的杨辉三角的行数
    输出
    输出杨辉三角,输出格式如图,其中每两个元素之间的空格数为3.最后一行的第一个‘1’之前空2格
    样例输入

    5
    

    样例输出

              1
            1   1
          1   2   1
        1   3   3   1
      1   4   6   4   1
    
    #include<iostream>
    #include<iomanip>
    using namespace std;
    using elemtype = int;
    const int MAXSIZE = 100;
    typedef struct Queue
    {
    	elemtype* data;
    	int front, rear;
    };
    bool InitQueue(Queue& Q)
    {
    	Q.rear = 0;
    	Q.front = 0;
    	Q.data = new elemtype[MAXSIZE];
    	return true;
    }
    bool EnQueue(Queue& Q, const elemtype e)
    {
    	if ((Q.rear + 1) % MAXSIZE == Q.front)
    	{
    		cout << "队满" << endl;
    		return false;
    	}
    	Q.data[Q.rear] = e;
    	Q.rear = (Q.rear + 1) % MAXSIZE;
    	return true;
    }
    bool DeQueue(Queue& Q, elemtype& e)     //引用不加要出大问题的!!!
    {
    	if (Q.rear == Q.front)
    	{
    		cout << "队空" << endl;
    		return false;
    	}
    	e = Q.data[Q.front];
    	Q.front = (Q.front + 1) % MAXSIZE;
    	return true;
    }
    bool IsEmpty(Queue Q)
    {
    	return Q.rear == Q.front ? true : false;
    }
    void yanghui(int N)
    {
    	int i, n, temp, m, add;
    	Queue Q;
    	InitQueue(Q);
    	m = N;
    	n = 1;
    	while (N >= n)
    	{
    		for (i = --m; i > 0; i--)
    			cout << "  ";
    		cout << "  1";
    		EnQueue(Q, 1);
    		if (n == 1)
    		{
    			n++;
    			cout << endl;
    			continue;
    		}
    		DeQueue(Q, temp);
    		add = temp;
    		for (i = 2; i < n; i++)
    		{
    			DeQueue(Q, temp);
    			cout << "  " << setw(2) << add + temp;
    			EnQueue(Q, add + temp);
    			add = temp;
    		}
    		cout << "   1" << endl;
    		EnQueue(Q, 1);
    		n++;
    	}
    }
    int main()
    {
    	int n;
    	cin >> n;
    	yanghui(n);
    	return 0;
    }
    
    展开全文
  • 总的思路 .... 结合杨辉三角的自身特性:1, 1 1 1 2 1 1 3 3 1 1 4 6 4 1 观察可得:如第 4 行 第 2 个数由第 三 行的 第2个与第一个得到,第 3 个数可由第三行的 第三个与

    总的思路 . 通过 n-1行 来得到 下一行(n行)的数据并将 入队,与此同时将 n-1 数据出队;
    第一步:构造第 —行的数据;
    第一步:如何得到下一行的数据?
    结合杨辉三角的自身特性:1, 第一行
    1 1 第二行
    1 2 1 第三行
    1 3 3 1 第四行
    1 4 6 4 1 第五行
    ················
    观察可得:如第 4 行 第 2 个数由第 三 行的 第2个与第1个得到,第 3 个数可由第三行的 第3个与第2个数得到, 依此类推
    第四行第 n 个 可由第三行的第 n-1个与 第n个得到。因此, 在n-1 行 出队时,需要 记录 前一个数;可能会问第一怎么得到, 因为第 1 个数前一个没有数, 只需将 用来记录前一个数的变量置零就好。通过这样就可以得到第n行的前n-1个数,还差最后一个数,因为每一行最后一个数固定为1,所以将1入队;

    用队列打印杨辉三角c

    #include<stdio.h>
    
    #define MAX 100
    
    struct queue{
    	int a[MAX];
    	int front;
    	int rear;
    }; 
    
    int main(void)
    {
    	struct queue xh;
    	int n, i, j, a, b;
    	
    	xh.rear = xh.front = 0;  /* 对队列进行初始化,这里不一定赋值0,只要在数组内,但要保证头尾指向一致*/ 
    	scanf("%d", &n);
        xh.a[xh.rear] = 1;
        xh.rear = (xh.rear + 1) % MAX; /*构造第一行数据*/ 
        for(i=1; i<=n; i++)
        {
        	a = 0;    /* 记录其前一个数 */ 
        	for(j=0; j<i; j++)
        	{
        		if ((xh.rear + 1)%MAX != xh.front)
        		{
        		    b = xh.a[xh.front];
        	    	xh.front = (xh.front + 1) % MAX;
    		    	printf("%d ", b);       /* 打印第 i 行的数据*/
    		    	xh.a[xh.rear] = b+a;
    		    	xh.rear = (xh.rear + 1) % MAX;      /*创建 i+1 行的数据,并入队 */ 
    		        a = b;
    			}
    		}
    		xh.a[xh.rear] = 1;
    		xh.rear = (xh.rear + 1) % MAX;
    		printf("\n");
    	}
    	return 0;
    }
    
    
    展开全文
  • 使用C++语言,数据结构基础从而利用队列实现杨辉三角打印
  • 利用循环队列打印杨辉三角形

    千次阅读 2020-11-11 20:44:43
    利用循环队列打印杨辉三角形 首先需要掌握的是循坏队列的基本函数 1:初始化 2:入队 3:出队 其次需要明确打印的循坏嵌套 最后将代码整合在一起 #include<stdio.h> #include<stdlib.h> #define MAXSIZE...

    利用循环队列打印杨辉三角形
    首先需要掌握的是循坏队列的基本函数
    1:初始化
    2:入队
    3:出队
    其次需要明确打印的循坏嵌套
    最后将代码整合在一起

    #include<stdio.h>
    #include<stdlib.h>
    #define MAXSIZE 100
    
    //循坏队列的存储结构定义 
    typedef struct 
    {
    	int data[MAXSIZE];
    	int front;//队首下标 
    	int rear;//队尾下标 
    } Queue;
    
    //初始化操作
    void InitQueue (Queue *q)
    {
    	q->front = q->rear = 0;//将队首队尾下标都赋值为0 
     } 
     
    //入队
    int pushQueue (Queue *q , int e)
    {
    	if((q->rear+1)%MAXSIZE == q->front) //损失一个元素的空间,尾指针所指向的空单元的后继单元是头所在的单元
    	{                                  //队列为满的条件:(rear+1)%MAXSIZE == front  
    		printf("队列已满不能入队!\n") ;
    		return 0 ;
    	}
    	else 
    	q->data[q->rear] = e; //元素从队尾进入队列 
    	q->rear = (q->rear+1)%MAXSIZE ; //入队:尾追头 
    	return 1 ;
     } 
     int popQueue(Queue *q,int &x)//这里需要将参数x值改变带回来,所以需要用引用或者指针 
     {
     	if(q->front==q->rear)
     		printf("队列为空!\n");
     		return 0;
     		x=q->data[q->front];//元素从队首位置出队列 
     		q->front=(q->front+1)%MAXSIZE;
    		return 1;	 
     }
    
     
    
     void YangHuiTriangle(int N)
     {
     	Queue q;
     	//q=new Queue();
     	int i,j,k,s1,s2,s,x;
     	InitQueue(&q);
     	for(k=1;k<=N;k++)
     		printf(" ");//打印第一行的空格 
     	printf("%d",1);//打印第一行的元素 
     	printf("\n");
     	pushQueue(&q,1);//将元素1入队 
     	for(i=2;i<=N;i++)//此层循坏控制着杨辉三角形的行数 
     	{
     		for(k=N-i;k>=0;k--)
     			printf(" ");// 打印第i行的空格 
    		s1=0;
    		for(j=1;j<=i-1;j++)//控制第i行中的元素 
    		{
    			popQueue(&q,s2);//将队列队首的元素出队。赋值给s2 
    			s=s1+s2;//控制前一行的元素相加 
    			pushQueue(&q,s);//将得到的结果s入队 
    			printf("%d",s);//打印s 
    			printf(" ");//设置打印后的空格 
    			s1=s2; 
    		} 
    		printf("%d",1);//打印第i行的最后一个元素 
    		pushQueue(&q,1);//将1重新入队 
    		printf("\n");
    	 }
     }
     //主函数 
     int main()
     {
     	int N;
     	printf("请输入杨辉三角形的行数:");
    	scanf("%d",&N);
    	YangHuiTriangle(N);//调用打印杨辉三角形的函数 
    	return 0;
     }
    
    展开全文
  • 数据结构课后作业,自己写的,用队列的方法打印杨辉三角
  • 队列打印杨辉三角

    2020-10-26 16:47:25
    利用队列打印杨辉三角型。 代码如下: #include<stdio.h> #define maxsize 50 typedef struct{ int a[maxsize]; int front; int rear; //int tag=0; }seqqueue; void initqueue(seqqueue *p){ p->...

    利用队列打印杨辉三角型。
    代码如下:

    #include<stdio.h>
    #define maxsize 50
    typedef struct{
     int a[maxsize];
     int front;
     int rear;
     //int tag=0;
    }seqqueue;
    void initqueue(seqqueue *p){
     p->front=p->rear=0;
    } 
    int enterqueue(seqqueue *p,int x){
     if((p->rear+1%maxsize==p->front))
     return 0;
     p->a[p->rear]=x;
     p->rear=(p->rear+1)%maxsize;
     return 1;
    }
    int deletequeue(seqqueue *q,int *x){
     if(q->front==q->rear)
     return 0;
     *x=q->a[q->front];
     q->front=(q->front+1)%maxsize;
     return 1;
    }
    void getheard(seqqueue *p,int *x){
     *x=p->a[p->front];
    }
    int isEmpty(seqqueue *p){
     if(p->front==p->rear)
     return 1;
     else return 0;
    }
    void YangHuiTriangle()
    {
     printf("请输入你要打印的杨辉三角的层数:");
     int y;
     scanf("%d",&y);
     int temp,x;
     int a,b;
     seqqueue Q;
     initqueue(&Q);
     enterqueue(&Q,1);
     for(int n=2;n<=y;n++){
      enterqueue(&Q,1);
      for(int i=1;i<=n-2;i++){
       deletequeue(&Q,&temp);
       printf("%d ",temp);
       getheard(&Q,&x);
       temp=temp+x;
       enterqueue(&Q,temp);
      }
      
      deletequeue(&Q,&x);
      printf("%d ",x);
      enterqueue(&Q,1);
      printf("\n");
     }
     
     while(!isEmpty(&Q)){
     deletequeue(&Q,&x);
        printf("%d ",x);
     }
    }
    int main(){
     YangHuiTriangle();
    }

    运行结过如下:在这里插入图片描述

    • 新手写的,可能不是最优解,但勉强解决了问题,如果感到对你有所帮助,点个赞吧!!!
        祝你幸福!
    展开全文
  • 队列打印杨辉三角

    2021-09-23 09:51:52
    1、用队列打印杨辉三角 队列的实现以及基本功能请参考:https://blog.csdn.net/qq_50504109/article/details/120384457 /** * 用队列打印杨辉三角的思路就是跟数组一样的,用前一列求出后面一列 * 不过队列不像...
  • 这里,我们用的队列是循环队列。解决这个问题很简单,打印一行,存一行代码如下:#include #include #include #include #define MaxSize 10 // 代码只能打印9行typedef struct{int data[MaxSize];int front;int rear;...
  •  // 定义错误类型代码,以便调用函数时用 cout请输出要打印杨辉三角的行数:"; cin>>n; cout(1); // 所输出的1入队 for(i=2; i; i++) // 依次计算并输出第2~i行上的数据 { s1=0; // 存放前一个出队的数 for(j=1...
  • 数组打印杨辉三角队列打印杨辉三角数组打印杨辉三角队列打印杨辉三角杨辉三角的例图:数学规律为:1、每一行的第一个数和最后一个数均为12、第 i 行第 j 列的数 = 第 (i-1) 行 (j-1) 列的数+第(i-1)第 j 列的数...
  • @使用队列打印杨辉三角(c++) 需要注意的我每行前面并没有打印空格,如果你有需要可以自行修改。 #include<bits/stdc++.h> using namespace std; void fun(int n) { queue<int>q; int temp = 0;//记录...
  • #include<stdio.h> #include<stdlib.h> #define MAXQSIZE 200 typedef int QElemType; ...//构造一个空队列Q void InitQueue(SqQueue *Q) { Q->base=(QElemType *)malloc(MAXQSI
  • 对于计算机专业的童鞋来说,学习每一门专业课,打印杨辉三角总是一个亘古不变的话题,这不,连《数据结构》这么高大上的科目,也通过循环队列的实现来找上了我们。首先,先来大致解释一下什么是循环队列。回忆起学习...
  • 利用循环队列打印杨辉三角(c语言实现)

    万次阅读 多人点赞 2018-08-29 16:01:22
    "请输入杨辉三角规模:\n" ); scanf ( "%d" ,&N); EnQueue(Q, 1 ); for (n= 2 ;n;n++){ EnQueue(Q, 1 ); for (c= 1 ;c 2 ;c++){ t=GetHead(Q); DeQueue(Q); printf ( "%4d" ,t); x=GetHead(Q); t=t+x; ...
  • 这是我的一个算法作业,利用队列打印杨辉三角,只要输入第几列就会打印出该列的内容,由于整数类型设置为int,所以有一定的使用范围
  • 参考胡学钢,合肥工业大学数据结构教材...//队列代码 #include&lt;iostream&gt; #define MaxLen 50 using namespace std; class queue { public: queue(); bool empty()const; bool full()const; int ...
  • 打印二项式系数表(即杨辉三角)11 2 11 3 3 11 4 6 4 1系数表中的第K行有k+1个数,除了第一个数和最后一个数为1外,其余的数则为上一行中位其左右的两数之和。如果要求计算并输出杨辉三角前N行的值,则队列的最大空间...
  • 队列 打印 杨辉三角

    千次阅读 2017-10-04 15:11:25
    //用队列打印杨辉三角 //算法:n=1 or 2 简单输出,n>=3-用队列实现(把杨辉三角按行入队,再出队) //利用队列 FIFO性质
  • 用循环队列实现杨辉三角的输出。通过该程序可以让你对循环队列有一定的理解。
  • 使用队列实现杨辉三角杨辉三角...想要用代码来实现杨辉三角最简单的方法就是使用两个数组来实现,互相承载结果,并将数组打印出来。但结合杨辉三角的特点,正序可以想到用队列的问题来解决。解决方案:可以想到,作...
  • 主要介绍了使用python打印十行杨辉三角过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 队列实现杨辉三角(附详细图解)

    千次阅读 2021-04-14 22:31:35
    之前我已经写了两篇关于队列的基本功能,今天我们使用循环顺序队来实现输出杨辉三角。 这是我们最终想要的效果:* 目录算法思路代码实现思考总结 算法思路 这里我将使用图示法配合文字。 代码实现 关于代码,这里只...
  • =self.front: self.rear=(self.rear+1)%self.MaxQueueSize self.s[self.rear]=x else: print("队列已满") return def DeQueue(self): if self.IsEmptyQueue(): print("队列为空") return else: self.front=(self....
  • 4-2 用循环队列打印杨辉三角形 ...请利用队列打印杨辉三角形前n行元素。 【基本要求】 (1) 输入一个整数,表示打印杨辉三角形的行数 (2) 按照输出样例的三角形形式在屏幕上打印杨辉三角形。.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,084
精华内容 833
关键字:

利用队列打印杨辉三角