數組隊列 與 鏈表隊列

來源:互聯網
上載者:User

標籤:ar   sp   on   c   代碼   時間   ad   ef   r   

做了些實驗,感覺 用鏈表實現隊列 比 用數組實現隊列 效能好

 

進出隊的每秒運算元比較

數組隊列

enqueue

37,037

dequeue

4,166,666

鏈表隊列

enqueue

277,778

dequeue

666,667

 

先入隊n次,再出隊n次的已耗用時間比較,單位是秒

出入隊次數 | 數組隊列已耗用時間 | 鏈表隊列已耗用時間

1,000

0.01

0.01

10,000

0.04

0.04

100,000

2.7

0.4

1,000,000

 

4

最後一組,數組隊列的半天沒運行出來

 

下面是代碼

class ArrayQueue:

    def __init__(self):

        self.items = []

 

    def isEmpty(self):

        return self.items == []

 

    def enqueue(self, item):

        self.items.insert(0,item)

 

    def dequeue(self):

        return self.items.pop()

 

    def size(self):

        return len(self.items)

 

class Node:

    def __init__(self,initdata):

        self.data = initdata

        self.next = None

        self.prev = None

        

class LinkedListQueue:

    def __init__(self):

        self.head = None

        self.rear = None

        self.size = 0

        

    def isEmpty(self):

        return self.size == 0

 

    def size(self):

        return self.size

        

    def enqueue(self,item):

        self.size += 1

        pre = self.head

        self.head = Node(item)

        self.head.next = pre

        if pre != None: pre.prev = self.head

        else: self.rear = self.head

        

    def dequeue(self):

        if self.size == 0: return None

        self.size -= 1

        rmdata = self.rear.data

        if self.rear.prev != None:

            self.rear = self.rear.prev

        return rmdata

        

  

 

數組隊列 與 鏈表隊列

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.