杨辉三角
队列初始状态:0 1 1
一、循环规则:
1、出队,并将值放在temp中;
2、temp中的值为0时:打印输出换行,0入队列,temp+myqueue.GetHead()入队列;
temp中的值不为0时:打印输出temp,temp+myqueue.GetHead()入队列;
二、实现代码
(默认已经实现队列的初始化、入队、出队、取队首元素等方法;)
cout << "杨辉三角" << endl;
int line = 6;//打印的行数
queue myqueue;//定义队列对象
myqueue.InitQueue();//初始化队列
//队列初始值为 0,1,1
myqueue.EnQueue(0);
myqueue.EnQueue(1);
myqueue.EnQueue(1);
int temp;
for (int i = 0; i < line+1;) {
//1、出队
myqueue.DeQueue(temp);
//2、对temp判断,temp==0时,temp!=0时
if (temp == 0) {
cout << endl;//换行
myqueue.EnQueue(0); //0入队
myqueue.EnQueue(temp + myqueue.GetHead());//temp + myqueue.GetHead() 入队
i++;
}
else {
cout << temp << " ";//打印输出temp中的值
myqueue.EnQueue(temp + myqueue.GetHead());//temp + myqueue.GetHead() 入队
}
}
队列的实现
#include <iostream>
using namespace std;
#define MAXSIZE 100
class queue {
public:
//初始化
void InitQueue() {
data = new int[MAXSIZE];
front = 0;
rear = 0;
}
//返回当前数组长度
int Getlen() {
return (rear + MAXSIZE - front) % MAXSIZE;
}
//输出队列元素
void Output() {
cout << "队列长度:" << (rear + MAXSIZE - front) % MAXSIZE << endl;
if (Getlen() != 0) {
cout << "队列中的所有元素:";
int index = front;
while (index != rear) {
cout << data[index++] << ",";
}
cout << endl;
}
}
//入队
bool EnQueue(int value) {
if (front == (rear + 1) % MAXSIZE) {//判断队满
cout << "队满" << endl;
return false;
}
data[rear] = value;
rear = (rear + 1) % MAXSIZE;
return true;
}
//出队
bool DeQueue(int &temp) {
//判断队空
if (front == rear) {
cout << "队空" << endl;
return false;
}
temp = data[front];
front = (front + 1) % MAXSIZE;
return true;
}
//队空
bool IsEmpty() {
return (rear == front) ? true : false;
}
//队满
bool IsFull() {
return ((rear + 1) % MAXSIZE == front) ? true : false;
}
///取队头元素
int GetHead() {
if (!IsEmpty()) {
return data[front];
}
else {
return -1;
}
}
private:
int *data;
int front;
int rear;
};
int main(){
//主函数
//(可以将杨辉三角的代码复制到主函数内运行)
return 0;
}