python实现队列的基本操作,出队、入队,计算队长

队列是数据结构中常用的一种类型,它和排队是情形一样,先进队列中的元素出队时一定是先出来的,定义一端为队首(队列元素出队的一端),另外一端为队尾(队列元素进队的一端);循环队列就是将队列的两个指针(首尾指针连接起来,可以更加方便进行操作)

顺序队操作:

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('\n链队的长度',node.getlength())
    print('出队元素:',node.push(),end=' ')





  • 6
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python队列(queue)可以通过入队(push)和出队(pop)操作来实现元素的添加和删除。首先,我们需要创建一个队列对象,并初始化为空队列。然后,我们可以使用push方法将元素添加到队列的末尾,使用pop方法从队列的头部删除元素。另外,我们还可以使用is_empty方法来判断队列是否为空,使用size方法来获取队列的长度。下面是一个示例代码: ```python class Queue(object): def __init__(self): self.list = [] def push(self, item): self.list.append(item) def pop(self): return self.list.pop(0) def is_empty(self): return self.list == [] def size(self): return len(self.list) s = Queue() print("入队前为空???:", s.is_empty()) s.push("西施") s.push("貂蝉") s.push("昭君") s.push("玉环") print('入队之后的长度:', s.size()) print(s.pop()) print('出队之后的长度:', s.size()) print("入队后为空???:", s.is_empty()) ``` 这段代码演示了如何使用自定义的Queue类实现队列入队出队操作。其中,push方法用于将元素添加到队列的末尾,pop方法用于从队列的头部删除元素。is_empty方法用于判断队列是否为空,size方法用于获取队列的长度。在这个示例中,我们先将一些元素添加到队列中,然后逐个删除并打印出队的元素。 希望这个例子能够帮助你理解如何在Python中使用队列进行入队出队操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值