21xrx.com
2024-12-22 21:25:02 Sunday
登录
文章检索 我的文章 写文章
C++实现顺序循环队列打印杨辉三角的算法思想
2023-07-05 07:14:56 深夜i     --     --
C++ 顺序循环队列 杨辉三角 算法思想 打印

杨辉三角是中国古代数学的经典成果之一,也是数学中的一种重要图形。其中的每一个数都是由上面的两个数相加得到的,形成一个三角形状。在计算机编程中,可以使用顺序循环队列来实现杨辉三角的打印操作。

顺序循环队列是一种基于数组的队列数据结构,它可以在队头和队尾进行插入和删除操作,支持循环队列的实现。

在实现杨辉三角打印的算法中,我们可以先将第一行的数存储在队列中,然后开始循环。在每次循环中,我们可以先将队头元素取出,打印出来,并将其相邻的两个数相加,得到新的数,将其插入队尾。这样一直循环下去,直到打印出指定行数的杨辉三角。

下面是C++实现顺序循环队列打印杨辉三角的代码:


#include <iostream>

using namespace std;

const int MAXSIZE = 100; // 循环队列最大长度

int q[MAXSIZE]; // 存储队列的数组

int front = 0, rear = 0; // 队头和队尾指针

// 初始化队列

void InitQueue()

  front = rear = 0; // 队头和队尾指针都指向0

// 判断队列是否为空

bool IsQueueEmpty()

{

  if (front == rear)

    return true;

  else

    return false;

}

// 判断队列是否已满

bool IsQueueFull()

{

  if ((rear + 1) % MAXSIZE == front)

    return true;

  else

    return false;

}

// 向队列中插入一个元素

bool EnQueue(int x)

{

  if (IsQueueFull())

    return false;

  else

  {

    q[rear] = x;

    rear = (rear + 1) % MAXSIZE; // 移动队尾指针

    return true;

  }

}

// 删除队列头元素

bool DeQueue(int& x)

{

  if (IsQueueEmpty())

    return false;

  else

  {

    x = q[front];

    front = (front + 1) % MAXSIZE; // 移动队头指针

    return true;

  }

}

// 打印杨辉三角

void PrintYangHui(int n)

{

  InitQueue(); // 初始化队列

  EnQueue(1); // 第一行只有一个1,先将其插入队列

  for (int i = 1; i <= n; i++)

  {

    int s = 0; // s表示相邻的两个数之和,初始值为0

    for (int j = 0; j < i; j++)

    {

      int x;

      DeQueue(x); // 取出队头元素

      cout << x << " ";

      EnQueue(x + s); // 插入相邻两数之和

      s = x; // 更新s的值

    }

    EnQueue(1); // 每行最后一个数为1,插入队尾

    cout << endl;

  }

}

int main()

{

  int n;

  cout << "请输入杨辉三角的行数:";

  cin >> n;

  PrintYangHui(n);

  return 0;

}

使用上述代码,我们就可以利用C++实现顺序循环队列来打印出指定行数的杨辉三角了。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复