• 队列-课前预习


    1

    错误

    2

    m

    3

    1. #include
    2. using namespace std;
    3. const int M = 100;
    4. int a[100],l=0,cnt=0;
    5. bool push(int x){
    6.  if(cnt>=M)return false;
    7.  else a[(l+cnt++)%M]=x;
    8.  return true;
    9. }
    10. int pop(){
    11.  if(cnt<= 0)return INT32_MIN;
    12.  else return a[l+(--cnt)];
    13. }
    14. void show(){
    15.  cout<<"队列为:";
    16.  for(int i=0;i
    17.    cout<' ';
    18.  cout<
    19. }
    20. int main(){
    21.  int op, p;
    22.  while(cin>>op && op!=-1){
    23.    cout<<"请选择您所需的操作:\n1.入队\n2.出队\n-1.退出"<
    24.    int x;
    25.    switch (op){
    26.      case 1:
    27.        cin>>x;
    28.        push(x);
    29.        show();
    30.        break;
    31.      case 2:
    32.        p=pop();
    33.        if(p==INT32_MIN)cout<<"队列为空"<
    34.        else cout<<"出队的元素为:"<<pop()<
    35.        break;
    36.   }
    37. }
    38.  return 0;
    39. }

    4

    1. #include
    2. using namespace std;
    3. class mydeque{
    4.  private:
    5.    int l,r,cnt;
    6.    int *p;
    7.  public:
    8.    static int maxn;
    9.    mydeque():l(0),r(1),cnt(0){p = new int[maxn];};
    10.    ~mydeque(){ delete p;}
    11.    bool push(int x);
    12.    int pop();
    13.    bool inject(int x);
    14.    int eject();
    15.    bool is_full(){return cnt==maxn;};
    16.    bool is_empty(){return cnt==0;};
    17.    void show();
    18. };
    19. int mydeque::maxn = 100;
    20. bool mydeque::push(int x){
    21.  if(is_full()) return false;
    22.  else {
    23.    int maxnn=mydeque::maxn;
    24.    p[l] = x;
    25.    l=(l-1+maxnn)%maxnn;
    26.    cnt++;
    27. }
    28. }
    29. int mydeque::pop(){
    30.  if(is_empty()) return INT32_MIN;
    31.  else {
    32.    l=(l+1)%mydeque::maxn;
    33.    cnt--;
    34.    return p[l];
    35. }
    36. }
    37. bool mydeque::inject(int x){
    38.  if(is_full()) return false;
    39.  else {
    40.    p[r]=x;
    41.    r=(r+1)%mydeque::maxn;
    42.    cnt++;
    43. }
    44. }
    45. int mydeque::eject(){
    46.  if(is_empty()) return INT32_MIN;
    47.  else {
    48.    int maxnn=mydeque::maxn;
    49.    r=(r-1+maxnn)%maxnn;
    50.    cnt--;
    51.    return p[r];
    52. }
    53. }
    54. void mydeque::show(){
    55.  cout<<"当前队列中的元素: ";
    56.  for(int i=1;i<=cnt;++i)
    57.    cout<" ";
    58.  cout<
    59. }
    60. int main(){
    61.  mydeque dq;
    62.  cout<<"请输入操作:\n1.队头入队\t2.队头出队\t3.队尾入队\t4.队尾出队\t-1.结束\n";
    63.  int op;
    64.  while(cin>>op && op!=-1){
    65.    int x, tmp;
    66.    switch(op){
    67.      case 1:
    68.        cin>>x;
    69.        dq.push(x);
    70.        dq.show();
    71.        break;
    72.      case 2:
    73.        tmp=dq.pop();
    74.        if(tmp==INT32_MIN) cout<<"队列为空\n";
    75.        else cout<<"出队元素为"<
    76.        break;
    77.      case 3:
    78.        cin>>x;
    79.        dq.inject(x);
    80.        dq.show();
    81.        break;
    82.      case 4:
    83.        tmp=dq.eject();
    84.        if(tmp==INT32_MIN) cout<<"队列为空\n";
    85.        else cout<<"出队元素为"<
    86.        break;
    87.   }
    88. }
    89. }

  • 相关阅读:
    适合学生党的蓝牙耳机有哪些?学生党蓝牙耳机推荐
    一千题,No.0077(计算谱半径)
    【javaEE】多线程进阶(Part1 锁策略、CAS、synchronized )
    Python基础入门例程3-NP3 读入字符串
    pyarrow 实现hdfs和本地文件传输
    Notebook系列第10期:图像风格转换
    【Linux】进程控制基础知识
    c++ cin 简单用法
    配置logback日志
    软测软测软测
  • 原文地址:https://blog.csdn.net/m0_64839851/article/details/126833672