zoukankan      html  css  js  c++  java
  • 2)队列

     1 #include<iostream>
     2 #include<iomanip>
     3 using namespace std;
     4 
     5 enum error{overflow,underflow,success};
     6 const int maxlen=100;
     7 
     8 class queue{
     9 public:
    10     queue();//初始化
    11     bool empty()const;//判断为空
    12     bool full()const;//判断为满
    13     int get_front(int &x)const;//取队头元素
    14     error append(const int x);//入队
    15     error serve();//出队
    16 private:
    17     int count;//队列中元素计数
    18     int rear,front;//队头,队尾
    19     int data[maxlen];//存储队列中的数据
    20 };
    21 queue::queue(){//初始化
    22     count=0;
    23     rear=front=0;
    24 }
    25 
    26 bool queue::empty()const{//判断为空
    27     if(count==0)return true;
    28     return false;
    29 }
    30 
    31 bool queue::full()const{//判断为满
    32     if(count==maxlen-1)return true;
    33     return false;
    34 }
    35 
    36 int queue::get_front(int &x)const{//取队头元素
    37     if(empty())return underflow;
    38     x=data[(front+1)%maxlen];
    39     return success;
    40 }
    41 error queue::append(const int x){//入队
    42     if(full())return overflow;
    43     rear=(rear+1)%maxlen;
    44     data[rear]=x;
    45     count++;
    46     return success;
    47 }
    48 
    49 error queue::serve(){//出队
    50     if(empty())return underflow;
    51     front=(front+1)%maxlen;
    52     count--;
    53     return success;
    54 }
    55 
    56 int main(){
    57     queue q;
    58     int n;
    59     cout<<"please input 杨辉三角要打印的行数:";
    60     cin>>n;
    61     int s1,s2;
    62     for(int i=1;i<n;i++)cout<<"  ";
    63     cout<<1<<endl;//输出第一行上的1
    64     q.append(1);//所输出1入队
    65     for(int i=2;i<=n;i++){//逐行计算并输出2~N行上的数据
    66         s1=0;//存放前一个入队数
    67         for(int k=1;k<=n-i;k++ )cout<<"  ";
    68         for(int j=1;j<=i-1;j++){//先计算并输出n-1个数
    69             q.get_front(s2);//取队头元素并出队
    70             q.serve();
    71             cout<<s1+s2<<setw(4);
    72             q.append(s1+s2);//所输出的当行中的元素入队
    73             s1=s2;
    74         }
    75         cout<<1<<endl;//输出当行中的子最后一个元素1并换行
    76         q.append(1);
    77     }
    78     return 0;
    79 }

  • 相关阅读:
    面试题19:包含min函数的栈
    编程之美 计算字符串的相似度
    android 数据持久化——I/O操作
    SSD磁盘,CPU居高不下,高并发的情况下,是不是mysql解析器耗费的cpu资源高?
    Eclipse、MyEclipse优化,提高运行速度
    Sonar入门学习
    Oracle 生成指定范围内随机日期
    ios中的GCD
    如何使用Win8系统自带杀毒软件
    安装Ubuntu版本linux过程中没有提示设置root用户密码问题的解决办法
  • 原文地址:https://www.cnblogs.com/minmsy/p/5021926.html
Copyright © 2011-2022 走看看