鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[技术交流] 打印符号三角形(队列的应用)

  [复制链接]
发表于 2014-1-4 19:53:52 | 显示全部楼层
真是难得给力的帖子啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-11 20:48:49 | 显示全部楼层
queue.h
  1. #ifndef QUEUE_H_INCLUDED
  2. #define QUEUE_H_INCLUDED

  3. #include <iostream>
  4. #include <new>

  5. template <class T>
  6. class Queue
  7. {
  8. private:
  9.     class Node
  10.     {
  11.     public:
  12.         T data;
  13.         Node * next;
  14.         Node(const T & d) : data(d), next(nullptr) {}
  15.         Node() : next(nullptr) {}
  16.     };

  17.     typedef Node * LinkList;

  18.     LinkList front;
  19.     LinkList rear;
  20.     unsigned int length;

  21. public:
  22.     Queue();
  23.     ~Queue();
  24.     bool enqueue(const T & item);
  25.     bool dequeue(T & item);
  26.     void show()const;
  27.     bool is_empty()const { return length == 0;}
  28.     unsigned int size()const { return length; }
  29. };

  30. template <class T>
  31. Queue<T>::Queue()
  32. {
  33.     front = rear = nullptr;
  34.     length = 0;
  35. }

  36. template <class T>
  37. Queue<T>::~Queue()
  38. {
  39.     if (front != nullptr)
  40.     {
  41.         LinkList temp = front;

  42.         while (front)
  43.         {
  44.             front = front -> next;
  45.             delete temp;
  46.             temp = front;
  47.         }
  48.     }
  49. }

  50. template <class T>
  51. bool Queue<T>::enqueue(const T & item)
  52. {
  53.     if (is_empty())
  54.     {
  55.         try{
  56.             front = rear = new Node(item);
  57.         }
  58.         catch(std::bad_alloc & ba) {
  59.             std::cout << ba.what() << std::endl;
  60.             return false;
  61.         }
  62.         length++;
  63.         return true;
  64.     }

  65.     LinkList add;

  66.     try {
  67.         add = new Node(item);
  68.     }
  69.     catch(std::bad_alloc & ba) {
  70.         std::cout << ba.what() << std::endl;
  71.         return false;
  72.     }

  73.     rear -> next = add;
  74.     rear = add;

  75.     length++;

  76.     return true;
  77. }

  78. template <class T>
  79. bool Queue<T>::dequeue(T & item)
  80. {
  81.     if (is_empty())
  82.         return false;

  83.     item = front -> data;

  84.     LinkList temp = front;
  85.     front = front -> next;

  86.     delete temp;

  87.     if (front == nullptr)
  88.         rear = front;

  89.     length--;

  90.     return true;
  91. }

  92. template <class T>
  93. void Queue<T>::show()const
  94. {
  95.     LinkList p = front;

  96.     while (p)
  97.     {
  98.         std::cout << p -> data << " ";
  99.         p = p -> next;
  100.     }
  101.     std::cout << std::endl;
  102. }

  103. #endif // QUEUE_H_INCLUDED
复制代码
main.cpp
  1. #include <iostream>
  2. #include "queue.h"

  3. int main()
  4. {
  5.     Queue<char> triangle;

  6.     using std::cout;
  7.     using std::endl;
  8.     using std::cin;

  9.     cout << "请输入一串符号: ";
  10.     char ch;
  11.     do
  12.     {
  13.         cin.get(ch);
  14.         if (ch != '\n')
  15.             triangle.enqueue(ch);
  16.     }while(cin && ch != '\n');

  17.     char once = '\0'; // 存储前一个字符

  18.     cout << "下面按要求打印符号三角形:\n";

  19.     if (triangle.is_empty())
  20.         return 0;

  21.     triangle.show(); // 打印第一行

  22.     unsigned int size = triangle.size();

  23.     for (unsigned int i = 2; i <= size; i++) // 从第二行开始打印
  24.     {
  25.         for (unsigned int j = 0; j < i - 1; j++)
  26.             cout << " ";

  27.         for (unsigned int k = 0; k <= size - i; k++) // 第i行输出size - i + 1个符号
  28.         {

  29.             char c;

  30.             if (once == '\0')
  31.             {
  32.                 triangle.dequeue(c);
  33.                 triangle.dequeue(ch);
  34.             }
  35.             else
  36.             {
  37.                 c = once;
  38.                 triangle.dequeue(ch);
  39.             }

  40.             if (c == ch)
  41.                 triangle.enqueue('+');
  42.             else
  43.                 triangle.enqueue('-');

  44.             once = ch;
  45.         }
  46.         triangle.show();
  47.         once = '\0';
  48.     }

  49.     return 0;
  50. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-26 19:27:47 | 显示全部楼层
真是被感动的痛哭流涕……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-14 22:52:02 | 显示全部楼层
顶楼主~~~ 哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-20 11:39:26 | 显示全部楼层
楼主加油,鱼C加油!我们都看好你哦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-22 07:32:37 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-22 07:41:09 | 显示全部楼层
  for( j=0; j < n-i-1; j++ )

        {

            deleteQueue(&q, &b);

            printf("%c ", b);


            if( a == b )

            {

                insertQueue(&q, '+');   // 同号,“+”入队列

            }

            else

            {

                insertQueue(&q, '-');   // 异号,“-”入队列

            }


            a = b;

        }

这一段代码什么意思????????????

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-22 08:03:06 | 显示全部楼层
希望小甲鱼老师能多找一些数据结构的练习题和配上相关算法的视频讲解,激动人心,无法言表!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-4-26 10:16:29 | 显示全部楼层
激动人心,无法言表!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-23 12:48:32 | 显示全部楼层
激动人心,无法言表!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-26 21:46:43 | 显示全部楼层
kan kan
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-6-18 20:48:45 | 显示全部楼层
淡定,淡定,淡定……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-6-18 20:50:09 | 显示全部楼层
甲鱼哥, 你演示的那个旋转的三角形如何做出来的,我想试试自己能不能做出来送女朋友:loveliness::loveliness::loveliness:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-6-19 08:33:08 | 显示全部楼层
淡定,淡定,淡定……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-10 23:34:14 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-10 23:38:35 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-14 22:52:40 | 显示全部楼层
真是难得给力的帖子啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-23 20:23:05 | 显示全部楼层
新手。楼主加油,鱼C加油!我们都看好你哦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-11 19:57:24 | 显示全部楼层
先回复看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-12 17:45:53 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 19:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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