程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 應用C說話來處理輪回隊列成績的辦法

應用C說話來處理輪回隊列成績的辦法

編輯:關於C++

應用C說話來處理輪回隊列成績的辦法。本站提示廣大學習愛好者:(應用C說話來處理輪回隊列成績的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是應用C說話來處理輪回隊列成績的辦法正文


標題描寫:

    年夜家都曉得數據構造外面有一個構造叫做輪回隊列。望文生義,這是一個隊列,而且是輪回的。然則如今,調皮的囧哥給這個輪回隊列加上了一些規則,個中有5條指令:

    (1) Push K, 讓元素K進隊列。

    (2) Pop,仇人元素出隊列。

    (3) Query K,查找隊列中第K個元素,留意K的正當性。

    (4) Isempty,斷定隊列能否為空。

    (5) Isfull,斷定隊列能否已滿。

    如今有N行指令,而且告知你隊列年夜小是M。

輸出:

    第一行包括兩個整數N和M。1<=N,M<=100000。

    接上去有N行,表現指令,指令格局見標題描寫。

    個中元素均在int規模。

輸入:

    關於指令(1),若隊列已滿,輸入failed,不然不做輸入。

    關於指令(2),若隊列已空,輸入failed,不然不做輸入。

    關於指令(3),輸入隊列中第K個元素,若不存在,輸入failed。

    關於指令(4)和(5),則用yes或許no答復。

    概況見樣例。

樣例輸出:

    12 2Push 1Push 2Push 3Query 2Query 3IsemptyIsfullPopPopPopIsemptyIsfull

樣例輸入:

    failed2failednoyesfailedyesno

AC代碼:

   

#include <stdio.h> 
  #include <stdlib.h> 
  #include <string.h> 
   
  #define queuesize 100001  //最年夜隊列長度 
   
  struct queue 
  { 
    int front; 
    int rear; 
    int data[queuesize]; 
    int count; //記載隊列中的元素 
  }; 
   
  void InitQueue(struct queue *Q); 
  void EnQueue(struct queue *Q, int element, int m); 
  void Dequeue(struct queue *Q, int m); 
  void QueueSearch(struct queue *Q, int k, int m); 
   
  int main() 
  { 
    int n, m, i, element, k, flag; 
    char command[10]; 
   
    while(scanf("%d%d",&n, &m) != EOF) 
    { 
      if(n < 1 || m > 100000) 
        return 0; 
      struct queue *Q; 
      Q = malloc(sizeof(struct queue)); 
      InitQueue(Q); 
      for(i = 0; i < n; i ++) 
      { 
        scanf("%s",command); 
        if (strcmp(command,"Push") == 0) 
        { 
          scanf("%d",&element); 
          EnQueue(Q, element, m); 
        }else if (strcmp(command,"Pop") == 0) 
        { 
          Dequeue(Q, m); 
        }else if (strcmp(command,"Query") == 0) 
        { 
          scanf("%d",&k); 
          QueueSearch(Q, k, m); 
        }else if (strcmp(command,"Isempty") == 0) 
        { 
          flag = (Q -> count == 0)? 1 : 0; 
          if(flag) 
          { 
            printf("yes\n"); 
          }else 
          { 
            printf("no\n"); 
          } 
        }else if (strcmp(command,"Isfull") == 0) 
        { 
          flag = (Q -> count == m)? 1 : 0; 
          if(flag) 
          { 
            printf("yes\n"); 
          }else 
          { 
            printf("no\n"); 
          } 
        } 
      } 
    }   
    return 0; 
  } 
   
  /** 
   * Description:隊列初始化 
   */ 
  void InitQueue(struct queue *Q) 
  { 
    Q -> front = Q -> rear = 0; 
    Q -> count = 0; 
  } 
   
  /** 
   * Description:入隊操作 
   */ 
  void EnQueue(struct queue *Q, int element, int m) 
  { 
    int flag; 
    flag = (Q -> count == m)? 1 : 0;  
   
    if(!flag) 
    { 
      Q -> data[Q -> rear] = element; 
      Q -> count ++; 
      Q -> rear = (Q -> rear + 1) % m; 
    }else 
    { 
      printf("failed\n"); 
    } 
  } 
   
  /** 
   * Description:出隊操作 
   */ 
  void Dequeue(struct queue *Q, int m) 
  { 
    int flag; 
    int element; 
   
    flag = (Q -> count == 0)? 1 : 0; 
   
    if(!flag) 
    { 
      element = Q -> data[Q -> front]; 
      Q -> front = (Q -> front + 1) % m; 
      Q -> count --; 
    }else 
    { 
      printf("failed\n"); 
    } 
  } 
   
  /** 
   * Description:查找隊列中的指定元素 
   */ 
  void QueueSearch(struct queue *Q, int k, int m) 
  { 
    int flag, temp; 
    flag = (Q -> count == 0)? 1: 0; 
    temp = Q -> front + k - 1; 
    if((!flag) && (k <= m && k >= 1)) 
    { 
      if((Q -> front < Q -> rear) && ( Q-> front <= temp && Q -> rear > temp)) 
        printf("%d\n",Q -> data[temp]); 
      else if((Q -> front > Q -> rear) && (temp >= Q -> front || temp < Q->rear)) 
        printf("%d\n",Q -> data[temp]); 
      else if(Q -> front == Q -> rear) 
        printf("%d\n",Q -> data[temp]); 
      else 
        printf("failed\n"); 
    }else 
    { 
      printf("failed\n"); 
    } 
  } 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved