Python数据结构之队列——链表创建队列

Python数据结构之队列——链表创建队列

重点:链表可以不限制的添加数据。

代码

  1. 初始化
class Item:
    def __init__(self, value):
        self.data = value
        self.next = None

front = None
rear = None

def create_queue():
    global front
    global rear

    data_items = [105, 119, 163, 182, 174]
    for item in data_items:
        new_data = Item(item)
        if rear is None:
            front = new_data
        else:
            rear.next = new_data
        rear = new_data
  1. 添加数据
def add_item(value):
    global rear
    global front

    item_node = Item(value)
    if rear.data is None:
        front = item_node
    else:
        rear.next = item_node
    rear = item_node
  1. 删除数据
def del_item():
    global front
    if front:
        find_data = front.data
        front = front.next
        return find_data
    else:
        return None
  1. 判断是否为空队列
def is_empty():
    if not front:
        return True
    else:
        return False
  1. 展示所有数据
def show_data():
    global front
    ptr = front
    while ptr:
        print(ptr.data, end=" -> ")
        ptr = ptr.next
    print()

总结:全部代码

class Item:
    def __init__(self, value):
        self.data = value
        self.next = None


front = None
rear = None


def create_queue():
    global front
    global rear

    data_items = [105, 119, 163, 182, 174]
    for item in data_items:
        new_data = Item(item)
        if rear is None:
            front = new_data
        else:
            rear.next = new_data
        rear = new_data


def add_item(value):
    global rear
    global front

    item_node = Item(value)
    if rear.data is None:
        front = item_node
    else:
        rear.next = item_node
    rear = item_node


def del_item():
    global front
    if front:
        find_data = front.data
        front = front.next
        return find_data
    else:
        return None


def is_empty():
    if not front:
        return True
    else:
        return False


def show_data():
    global front
    ptr = front
    while ptr:
        print(ptr.data, end=" -> ")
        ptr = ptr.next
    print()


if __name__ == '__main__':
    create_queue()
    print("front.data: ", front.data, "\trear.data: ", rear.data)
    print("添加前:", end="\t")
    show_data()
    add_item(200)
    print("添加后:", end="\t")
    show_data()
    print("出队:", del_item())
    print("出队:", del_item())
    print("出队:", del_item())
    print("出队:", del_item())
    print("出队:", del_item())
    print("出队:", del_item())
front.data:  105 	rear.data:  174
添加前:	105 -> 119 -> 163 -> 182 -> 174 -> 
添加后:	105 -> 119 -> 163 -> 182 -> 174 -> 200 -> 
出队: 105
出队: 119
出队: 163
出队: 182
出队: 174
出队: 200

进程已结束,退出代码0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值