iT邦幫忙

2022 iThome 鐵人賽

DAY 11
0

昨天介紹了用array的方式做Queue,今天來介紹用linked list製作!

[法二]用linked list製作

一、single linked list
宣告:
1.Node structure is:

data link
2.rear,front:pointer = Null;
  • enqueue(Q,item)
    觀念:
    case1:Q原先為空
    https://ithelp.ithome.com.tw/upload/images/20220927/20131400NbmGfaAKn9.jpg
    case2:Q原先非空
    https://ithelp.ithome.com.tw/upload/images/20220927/20131400WjoQXl3BoC.jpg
  {
      New(t);
      t➝Data=item;
      t➝link=Null;
      if(Front==Null) then Front=t; //Q空
      else Rear➝link=t; //Q非空
      Rear=t;
   }
  • dequeue(Q)
    觀念:
    https://ithelp.ithome.com.tw/upload/images/20220927/201314007JlCgqy0aU.jpg
  {
      if(front==Null) then return "Q empty";
      else{
            ①t = Front;
            ②item = Front➝Data;
            ③Front = Front➝link;
            ④free(t);
            if(front==Null) then rear = Null;
            return item;
          }
   }

二、circular linked list
https://ithelp.ithome.com.tw/upload/images/20220927/20131400tp1ctlhLQt.jpg
只用一個pointer即可表示尾及前端
即rear:指向尾端
rear➝link:前端

宣告:
1.Node structure is:

data link
2.Rear:pointer = Null;
  • enqueue(Q,item)
    觀念:
    case1:Q原先為空
    https://ithelp.ithome.com.tw/upload/images/20220927/20131400FLSEtyFKy3.jpg
    case2:Q原先非空
    https://ithelp.ithome.com.tw/upload/images/20220927/20131400CvEdck825T.jpg
  {
      New(t);
      t➝Data=item;
      if(Rear==Null) then t➝link=t; //Q空
      else{ //Q非空
          t➝link=Rear➝link;
          Rear➝link=t;
      }
      rear=t; //剛插入的t變成rear
   }
  • dequeue(Q)
  {
      if(Rear==Null) then return "Q empty";
        ①t = Rear➝link;
        ②item = (Rear➝link)➝Data;
        ③Rear➝link = (Rear➝link)➝link;
        ④free(t);
   }

https://ithelp.ithome.com.tw/upload/images/20220927/20131400J5xJEGz7eH.jpg

Queue的種類

  1. FIFO Queue
  2. Priority Queue
    不一定遵守FIFO性質,而是支持插入任意權值元素及刪除最大(or最小)權值之動作,常用於OS中製作Queue之最適合的資料結構
  3. Double-ended Queue(雙邊佇列)
    Queue的任意兩端皆可插入即刪除元素
  4. Double-ended priority Queue
    此Queue支持插入任意權值元素、刪除最大權值元素、刪除最小權值元素
    製作此Queue之Data structure有min-max heap、deap及SMMH

上一篇
Day 10. Queue-佇列
下一篇
Day 12. Tree-樹 ┏((= ̄(エ) ̄=))┛
系列文
演算法資料結構,五四三二一起GO!15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言