鱼C论坛

 找回密码
 立即注册
查看: 1311|回复: 2

[已解决]逆序输出的栈实现

[复制链接]
发表于 2021-7-23 22:12:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
首先看原题
Description
输入一个正整数 a(0\le a\le 10^9)a(0≤a≤10
9
),逆序输出该数(不带前导0)

Format
Input
一个正整数 a(0\le a\le 10^9)a(0≤a≤10
9
)。

Output
逆序输出该数(不带前导0).

这是在OJ上的题,我用栈做的,用OJ提供的编译机算的是0分,用devc++算的是去了零,但没有逆序
我是从高位进栈,输出时从低位出栈并过滤0
代码如下:
  1. #include <iostream>
  2. #include <stack>
  3. using namespace std;

  4. int main()
  5. {
  6.     int a;
  7.     cin>>a;

  8.     stack<int> intes;

  9.     while (a != 0)
  10.     {
  11.         intes.push(a % 10);
  12.         a /= 10;
  13.     }

  14.     while (1)
  15.     {
  16.         bool flag = 0;
  17.         if (intes.top() == 0)
  18.         {
  19.             intes.pop();
  20.             continue;
  21.         }
  22.         if (intes.top() != 0)
  23.         {
  24.             if (flag == 0)
  25.             {
  26.                 flag = 1;
  27.             }
  28.             cout<<intes.top();
  29.             intes.pop();
  30.         }
  31.         if (intes.empty())
  32.         {
  33.             break;
  34.         }
  35.     }
  36.    
  37.     return 0;
  38. }
复制代码

求解答
最佳答案
2021-7-23 22:42:13
  1. #include <iostream>
  2. #include <queue>

  3. using namespace std;

  4. int main()
  5. {
  6.     int a;
  7.     cin>>a;

  8.     queue<int> intes;

  9.     while (a != 0)
  10.     {
  11.         intes.push(a % 10);
  12.         a /= 10;
  13.     }

  14.     bool flag = 0;
  15.     while (1)
  16.     {
  17.         if (intes.front() == 0 && flag == 0)
  18.         {
  19.             intes.pop();
  20.             continue;
  21.         } else {
  22.             if (flag == 0)
  23.             {
  24.                 flag = 1;
  25.             }
  26.             cout<<intes.front();
  27.             intes.pop();
  28.         }
  29.         if (intes.empty())
  30.         {
  31.             break;
  32.         }
  33.     }

  34.     std::cout << std::endl;
  35.     return 0;
  36. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-7-23 22:39:19 | 显示全部楼层
这个程序应该使用栈吗?
应该使用队列吧?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-23 22:42:13 | 显示全部楼层    本楼为最佳答案   
  1. #include <iostream>
  2. #include <queue>

  3. using namespace std;

  4. int main()
  5. {
  6.     int a;
  7.     cin>>a;

  8.     queue<int> intes;

  9.     while (a != 0)
  10.     {
  11.         intes.push(a % 10);
  12.         a /= 10;
  13.     }

  14.     bool flag = 0;
  15.     while (1)
  16.     {
  17.         if (intes.front() == 0 && flag == 0)
  18.         {
  19.             intes.pop();
  20.             continue;
  21.         } else {
  22.             if (flag == 0)
  23.             {
  24.                 flag = 1;
  25.             }
  26.             cout<<intes.front();
  27.             intes.pop();
  28.         }
  29.         if (intes.empty())
  30.         {
  31.             break;
  32.         }
  33.     }

  34.     std::cout << std::endl;
  35.     return 0;
  36. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-27 05:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表