分别用数组、链表实现队列

'''==========数组实现队列==============='''
class MyQueue():
    #用两个指针分别记录队列首元素的位置、队列尾元素往后一个位置
    def __init__(self):
        self.items = []
        self.front = 0 #队列头
        self.last = 0 #队列尾元素往后一个位置
    #判断队列是否为空
    def empty(self):
        return  self.front ==self.last
    #返回队列的大小
    def size(self):
        return self.last -self.front
    #返回队列的首元素
    def getFront(self):
        if self.empty():
            return None
        else:
            return self.items[self.front]
    #返回队列的尾元素
    def getLast(self):
        if self.empty():
            return None
        else:
            return self.items[self.last-1]
    #删除队列头元素
    def deQueue(self):
        if self.front<self.last:
            self.front+=1
        else:
            print("队列已空")
    #把新元素加入队列
    def enQueue(self,e):
        self.items.append(e)
        self.last+=1
if __name__=="__main__":
    Q = MyQueue()
    Q.enQueue(1)
    Q.enQueue(2)
    Q.enQueue(5)
    print("队列的头元素是:"+str(Q.getFront()))
    print("队列的尾元素是:" + str(Q.getLast()))
    print("队列的大小是:" + str(Q.size()))


'''==========链表实现队列==============='''
class Node(object):
    # 创建一个节点
    def __init__(self, val=None, next=None):
        self.val = val
        self.next = next

class MyQueue():
    # 分配头结点
    def __init__(self):
        self.pHead = None
        self.pEnd = None

    # 判断队列是否为空
    def isEmpty(self):
        if self.pHead == None:
            return True
        else:
            return False

    # 返回队列大小
    def size(self):
        size = 0
        p = self.pHead
        while p:
            size += 1
            p = p.next
        return size

    # 返回队列首元素
    def getpHead(self):
        if self.isEmpty():
            return None
            print("队列已经是空")
        return self.pHead.val

    # 返回队列尾元素
    def getpEnd(self):
        if self.isEmpty():
            return None
            print("队列已经是空")
        return self.pEnd.val

    # 出队列,删除队列头元素
    def deQueue(self):
        if self.isEmpty():
            return None
            print("队列已经是空")
        self.pHead = self.pHead.next
        # 全部删除后头结点指针与魏结点指针重合,均指向None
        if self.pHead == None:
            self.pEnd = None

    # 把新元素加入队列尾
    def addQueue(self, e):
        p = Node()
        p.val = e
        # p.next =None
        if self.pHead == None:
            self.pHead = self.pEnd = p
        else:
            self.pEnd.next = p
            self.pEnd = p


if __name__ == "__main__":
    Q = MyQueue()
    Q.addQueue(1)
    Q.addQueue(2)
    Q.addQueue(5)
    print("队列的头元素是:" + str(Q.getpHead()))
    print("队列的尾元素是:" + str(Q.getpEnd()))
    print("队列的大小是:" + str(Q.size()))






 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值