羅德興老師的教學歷程檔案 - 112-2 資料結構 (2024年) - Unit 5 佇列 (Queue)
 

企業資訊與管理系
助理教授/日導
羅德興


歷程檔案 Portfolio

    Unit 5 佇列 (Queue)

    Unit 5 佇列 (Queue)


     




     














    Procedure Add(item,Queue)

    Begin

      if (Rear=N-1)                      //如果Rear指標指到佇列的尾端,則

    Queue Is Full;             //代表佇列滿

      else                                    //如果不是,則

       {

         Rear=Rear+1;                 //Rear指標加1

         Queue[Rear]=item;        //再將資料加入到Rear指標所在的佇列

       }

    End

    End Procedure









    Procedure Delete(item, Queue)

    Begin

      if (Front=Rear)               //如果前端指標Front等於尾端指標Rear時,則

    Queue Is Empty;     //代表佇列

      else                                 //否則

       {

        Front=Front+1;            //Front指標加1

        item=Queue[Front];    //再將Front指標所在佇列內容刪除

       }

    End

    End Procedure
























    以陣列來製作
    佇列

    範例 5-1

    '''
    This is ds-ex5-queue.ipynb by 羅老師 on 2023/05/08
    使用佇列進行Enqueue
    想想 IPO ......
    想想 演算法
    '''

    MaxNum=5           #定義佇列大小
    Queue=[0,0,0,0,0]  #以陣列Queue當作佇列
    Rear =0
    Front=0
    def menu():
        print("==============================================");
        print("=   1.Enqueue(加入)                          =");
        print("=   2.Showqueue(顯示)                        =");  
        print("=   3.結束                                   =");    
        print("==============================================");
    #將資料加入佇列
    def Enqueue():
        global Rear
        global Front
        while True:
            item =input("請輸入你要加入的資料(按 ENTER 回主選單):")
            if item==""break
            if(Rear == MaxNum-1):
              print("佇列是滿的,無法加入!")
            else:
              Rear=Rear+1
              Queue[Rear] = item       

    #列印目前佇列的內容
    def Showqueue():
        global Rear
        global Front
        strTmep=""
        while True:
         if(Front == Rear): 
           print("佇列是空的!")
         else:      
            for i in range(Front+1,Rear+1,1):    
               strTmep=strTmep + Queue[i] +', '
            print("%s 是從佇列取出的資料" % strTmep)
         input("請按任意鍵返回主選單"
         break          
        
    while True:
        menu()
        choice = int(input("請輸入您的選擇:"))
        print()
        if choice==1:
            Enqueue()          #將資料加入佇列
        elif choice==2:
            Showqueue()      #取出佇列資料
        elif choice==3:
             break     
    print("程式執行完畢!")

     

    Ex5-1.
    請修改 範例 5-1 
    (1) 讓使用者輸入
    陣列個數
    (2)增加一個選項和函數 做 Deque (從 佇列 取出資料項、刪除)



    全部共 3則留言
    05-14 13:48:https://colab.research.google.com/drive/1cAE-4sWyQnfXLLK5_BD5mF2KwOyMRj37
    周育賢06-26 10:55:5-1https://colab.research.google.com/drive/1V2-CJ5vDmFq_X-JFpbOKcnXGpoveQJ4S
    魏鼎軒06-26 11:44:https://colab.research.google.com/drive/1LvNxamSQf_Enau_-7arc2KY6-g9p7ZoZ
    登入帳號密碼代表遵守學術網路規範


    文章分類 Labels


    最新文章 Top10

    中華科技大學數位化學習歷程 - 意見反應