Python数据结构之队列——使用数组实现队列

Python数据结构之队列——使用数组实现队列

  1. 队列:一种受限制的线性表,ADT类型,仅支持队头删除数据和队尾添加数据。
  2. 具有先进先出,后进后出的特性。
  3. 适合领域:计算机模拟、CPU特性、外围设备的联机并发性质、树的广度优先搜索 (BFS)。
  4. 优点:只需要对 front(队首) 和 rear(队尾) 指针来进行操作数据。
  5. 缺点:数组队列容易产生假溢出现象。
  6. 假溢出: rear 指针添加数据时会超过数据大小范围,导致 rear 指向其他区域。

代码部分(5组)

  1. 创建队列
front = -1
rear = -1
array_size = 10
array = [None] * array_size


def create_queue():
    global rear

    name = ["小明", "小华", "小张", "小李", "小东"]
    for i in range(5):
        rear += 1
        array[rear] = name[i]

  1. 添加数据
def add_data(name):
    global rear
    rear += 1
    array[rear] = name
  1. 删除数据
def delete():
    global front
    front += 1
    find_data = array[front]
    array[front] = None
    return find_data
  1. 判断是否为空队列
def empty():
    if front == rear:
        return True
    else:
        return False

总结:队列和栈和线性表都是顺序结构、可以使用链式存储和顺序存储;

# Use array make queue struct
front = -1
rear = -1
array_size = 10
array = [None] * array_size


def create_queue():
    global rear

    name = ["小明", "小华", "小张", "小李", "小东"]
    for i in range(5):
        rear += 1
        array[rear] = name[i]


def add_data(name):
    global rear
    rear += 1
    array[rear] = name


def delete():
    global front
    front += 1
    find_data = array[front]
    array[front] = None
    return find_data


def empty():
    if front == rear:
        return True
    else:
        return False


if __name__ == '__main__':
    create_queue()
    print("数据中的数据为: ", array)
    add_data("李子柒")
    print("添加后数组中的数据为: ", array)
    print("删除的数据: ", delete())
    print("删除后数组中的数据为: ", array)
    print("front", front, ", rear", rear)
    for i in range(5):
        delete()
    if empty():
        print("队伍已经为空!")
    else:
        print("队伍不为空!")
        print(array)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值