Python实现线性数据结构-线性表、栈、队列

线性数据结构:数据项之间具有一对一的线性关系,除了第一个和最后一个数据项之外,每个数据项都有且仅有一个前驱和一个后继。

复制代码
1.线性表:由有穷个元素组成,由一块连续内存顺序地存储在表中的元素。 也称为顺序表或连续表。可增删改查
2.栈:有序集合LIFO(后进先出)结构。添加、移除新项在顶部。 创建、添加、删除、判断是否为空、返回栈item数量
3.队列:有序集合FIFO(先进先出)结构。队尾添加,队首移除,。 创建、添加、删除、判断是否为空、返回栈item数量
python 复制代码
from collections import deque

def linear_list():
    # Python的内置列表(list)本质上就是一个线性表
    list = [1,2,3,4,5]
    print(list[0])
    list.append(6)
    list.remove(3)
    list[1] = 10
    print(list)

linear_list()



class Stack:
    # Python没有内置的栈,使用列表实现效果
    def __init__(self):
        self.items = []

    def is_empty(self):
        # 长度=0返回True, 否则返回false
        return len(self.items) == 0
    def push(self,item):
        self.items.append(item)

    def pop(self):
        if not self.is_empty():
            # pop() 移除并返回最后一个元素
            return self.items.pop()
        else:
            raise IndexError('pop from empty stack')

    def peek(self):
        if not self.is_empty():
            # 访问最后一个元素
            return self.items[-1]
        else:
            raise IndexError('peek from empty stack')

    def size(self):
        return len(self.items)

stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.is_empty())
print(stack.pop())
print(stack.peek())


class Queue:
    # Python collections.deque是一个双端队列
    def __init__(self):
        self.items = deque()

    def is_empty(self):
        # 长度=0返回True, 否则返回false
        return len(self.items) == 0

    def enqueue(self,item):
        self.items.append(item)

    def dequeue(self):
        if not self.is_empty():
            # pop() 移除并返回队首元素
            return self.items.popleft()
        else:
            raise IndexError('dequeue from empty queue')

    def size(self):
        return len(self.items)

queue = Queue()
queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)
print(queue.is_empty())
print(queue.dequeue())
print(queue.size())

执行结果:

1

1, 10, 4, 5, 6

False

3

2

False

1

2

相关推荐
寻星探路8 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
lly20240610 小时前
Bootstrap 警告框
开发语言
2601_9491465311 小时前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言
曹牧11 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
KYGALYX11 小时前
服务异步通信
开发语言·后端·微服务·ruby
zmzb010311 小时前
C++课后习题训练记录Day98
开发语言·c++
ValhallaCoder11 小时前
hot100-二叉树I
数据结构·python·算法·二叉树
猫头虎12 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
YUJIANYUE12 小时前
PHP纹路验证码
开发语言·php
仟濹12 小时前
【Java基础】多态 | 打卡day2
java·开发语言