2020年6月2日 星期二

[C語言] 使用陣列(Array) 實作資料結構的佇列(Queue)

[C語言] 使用陣列(Array) 實作資料結構的佇列(Queue)

Array implementation of Queue

佇列(Queue)加入(Push)與刪除(Pop)資料在不同端(front & tail),就像排隊買票一樣的道理。可以參考上一篇的介紹 [C語言] 以鏈結串列(Linked List) 實作資料結構的佇列(Queue),這次使用陣列(Array) 實作佇列。

佇列的基本操作,如下所示
1. Push(data):在尾端加入新資料
2. Pop:從前端取出資料
3. getFront:回傳最舊的資料
4. getTail:回傳最新的資料
5. IsEmpty:檢查Queue是否是空的

用陣列Array) 實作佇列(Queue)

#include <stdio.h>
#include <stdlib.h>

int queue[MAXQ];
int front = -1;
int tail =-1;
int size = 0;

int main() {
  for(int i =0; i<5;i++){
    size+=1;
    Push(rand()%100);
  }  

  printf("佇列最前面的資料為:%d\n",getFront());
  printf("佇列最後面的資料為:%d\n",getTail());
  printf("佇列的總數為:%d\n\n",getSize());
  
  while(!isempty()){
    printf("佇列刪除的資料為:%d\n",pop());
  }
  return 0;
}

void Push(int a){
  if(tail==MAXQ)
    printf("佇列已滿");
  else
    queue[++tail] = a;
}

int Pop(){  
  return queue[++front];  
}

int getFront(){
  return queue[front+1];
}

int getSize(){
  return size;
}

int getTail(){
  return queue[tail];
}

int isempty(){
  if(front==tail)
    return 1;
  else
    return 0;
}



程式會依序印出:
佇列最前面的資料為:83
佇列最後面的資料為:93

佇列刪除的資料為:83
佇列刪除的資料為:86
佇列刪除的資料為:77
佇列刪除的資料為:15
佇列刪除的資料為:93

可以看看底下示意圖:
群聯面試考題, 聯發科面試考題, Queue, ARRAY
▲ push完資料


群聯面試考題, 聯發科面試考題, Queue, ARRAY
▲pop完資料

延伸閱讀:

臉書FB標記不到人? 簡單教你如何TAG好友

【高蛋白體驗文】RED COW 紅牛聰勁即溶乳清蛋白,健身增肌必備奶粉推薦

【新莊美食】觀醬手|日式無菜單料理採預約制,用千元有找的價格吃到兩倍價值的料理!


沒有留言:

張貼留言