首页 > 其他 > 详细

队列基本操作以及用队列实现杨辉三角

时间:2021-04-02 22:14:15      阅读:34      评论:0      收藏:0      [点我收藏+]

杨辉三角在之前已经写过一种计算方法,利用结构体的拷贝,杨辉三角元素的求解仍然是利用两腰之和,当一个数取出与后面的数做加法,进栈,可以重复获得杨辉三角的值,不断进出,这样还能减少大量空间,数使用过就抛弃掉。为了获得数字两边的1,每一行计算都添加一个0,末尾也添加一个0,用于结束这一行的标志。但最后一行计算时只要出队即可。

#include<stdio.h>
#include <stdlib.h>
#include<stdbool.h>
typedef int ElemType;
typedef struct
{
	ElemType* Base;
	int front;
	int rear;
	int QueueSize;
	int count;
}Queue;

typedef Queue* PQueue;

void InitQueue(PQueue Q, int size)//队列初始化
{
	Q->Base = (ElemType*)malloc(sizeof(ElemType) * (size+1));
	Q->front = 0;
	Q->rear = 0;
	Q->count = 0;
	Q->QueueSize = size;

}

bool IsEmpty(PQueue Q)//判断队列是否为空
{
	if (!Q->count) return true;
	else return false;
}

bool IsFull(PQueue Q)//判断队列是否已满
{
	if (Q->count>=Q->QueueSize) return true;
	else return false;
}

bool EnQueue(PQueue Q, ElemType NewItem)//进队
{
	if (!IsFull(Q)) { Q->Base[Q->rear] = NewItem; Q->rear = (Q->rear + 1) % Q->QueueSize; Q->count++; return true; }
	else return false;
}

bool DeQueue(PQueue Q, ElemType* OutItem)//出队
{
	if (!IsEmpty(Q)) { *OutItem = Q->Base[Q->front]; Q->front =( Q->front + 1) % Q->QueueSize; Q->count--; return true; }
	else return false;
}

bool GetHead(PQueue Q, ElemType* RearItem)//获得队列头元素
{
	if (!IsEmpty(Q)) *RearItem = Q->Base[Q->front];
	else return false;
}

void YangHui(int n)
{
	PQueue Q = (PQueue)malloc(sizeof(Queue));
	int s=0, e=0;
	InitQueue(Q, n + 2);
	EnQueue(Q, 0);
	EnQueue(Q, 1);
	EnQueue(Q, 1);
	int k = 1;
	while (k < n)
	{
		for (int i = 1; i <= n - k; i++) printf(" ");
		EnQueue(Q, 0);
		do {
			DeQueue(Q, &s);
			GetHead(Q, &e);
			if (e)printf("%d ", e);
			else printf("\n");
			EnQueue(Q, s + e);
		
		} while (e != 0);
		k++;
	}
	
	DeQueue(Q, &e);
	while (!IsEmpty(Q))
	{
		DeQueue(Q, &e);
		printf("%d ", e);
	}

}




int main()
{
	PQueue Q=(PQueue)malloc(sizeof(Queue));
	int c;
	InitQueue(Q, 10);
	YangHui(6);

}

队列基本操作以及用队列实现杨辉三角

原文:https://www.cnblogs.com/tzp-empty-hya/p/14612270.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!