pythonはキューの基本操作を実現し、出隊、入隊、計算隊長


キューはデータ構造でよく使われるタイプで、キューと同じように、先進的なキューの要素がデキューされるときは必ず先に出てきて、一端がキューヘッダ(キュー要素のデキューの一端)、他端がキューテール(キュー要素のデキューの一端)と定義されています.ループキューとは、キューの2つのポインタ(先頭と末尾のポインタを接続し、操作をより容易にすることができます)です.
シーケンスキュー操作:
class Queue(object):
	#       
    def __init__(self):
        self.__list = []

    #   
    def pushqueue(self,item):
        #    ,    
        self.__list.append(item)
        #    ,    
        # self.__list.insert(0,item)

    #   
    def putqueue(self):
        return self.__list.pop(0)
        # return self.__list.pop()

    #       
    def is_empty(self):
        return self.__list == []

    #     
    def size(self):
        return len(self.__list)

if __name__ == '__main__':
    s = Queue()
    s.pushqueue(1)
    s.pushqueue(2)
    s.pushqueue(3)
    print('       ', s.size())
    print(s.putqueue(),end=' ')
    print(s.putqueue(),end=' ')
    print(s.putqueue(),end=' ')
    print('       ',s.size())


キューの操作
'''     '''

class QueueNode(object):
    #        
    def __init__(self):
        self._queue = None
        self._quenext = None


class DefineQueue(object):

    #      
    def __init__(self):
        self._queuehead = QueueNode()
        #       
        tqueue = QueueNode()
        # front rear          
        self._front = tqueue
        self._rear = tqueue

    #       
    def is_empty(self):
        #  front rear         
        if self._front == self._rear:
            return True
        else:
            return False

    #  
    def getlength(self):
        #      
        if self.is_empty():
            return
        else:
            #     
            quenode = self._front
            #  
            count = 0
            #        ,   rear  ,        +1,        
            quenode = self._front._quenext
            while quenode != self._rear:
                count += 1
                quenode = quenode._quenext
            count += 1
            return count

    #   
    def put(self, put_data):
        #        
        que_data = QueueNode()
        #                    
        que_data._queue = put_data
        #    next        
        self._rear._quenext = que_data
        #           
        self._rear = que_data

    #   
    def push(self):
        #        
        if self.is_empty():
            return 'Error'
        else:
            #               
            putqueue = self._front._quenext
            #        next   front next
            self._front._quenext = putqueue._quenext
            #      ,      front  rear
            if self._rear == putqueue:
                self._rear = self._front
            #       
            return putqueue._queue

    #      
    def getqueue(self):
        #          
        if self.is_empty():
            return
        else:
            #         front.next     
            quenode =self._front._quenext
            #  front  rear,     
            while quenode != self._rear:
                #      
                print(quenode._queue,end=' ')
                #        
                quenode = quenode._quenext
            print(quenode._queue,end=' ')


if __name__ == '__main__':
    node = DefineQueue()
    for i in range(5):
        node.put(i)
    print('      :',end=' ')
    node.getqueue()
    print('
'
,node.getlength()) print(' :',node.push(),end=' ')