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

相关推荐
柯南二号11 分钟前
【Java后端】MyBatis-Plus 原理解析
java·开发语言·mybatis
一只鱼^_25 分钟前
牛客周赛 Round 105
数据结构·c++·算法·均值算法·逻辑回归·动态规划·启发式算法
0wioiw030 分钟前
Python基础(Flask①)
后端·python·flask
我是哈哈hh31 分钟前
【Node.js】ECMAScript标准 以及 npm安装
开发语言·前端·javascript·node.js
飞翔的佩奇1 小时前
【完整源码+数据集+部署教程】食品分类与实例分割系统源码和数据集:改进yolo11-AggregatedAttention
python·yolo·计算机视觉·数据集·yolo11·食品分类与实例分割
OperateCode1 小时前
AutoVideoMerge:让二刷更沉浸的自动化视频处理脚本工具
python·opencv·ffmpeg
蔡俊锋1 小时前
Javar如何用RabbitMQ订单超时处理
java·python·rabbitmq·ruby
跟橙姐学代码1 小时前
学Python别死记硬背,这份“编程生活化笔记”让你少走三年弯路
前端·python
Sammyyyyy2 小时前
2025年,Javascript后端应该用 Bun、Node.js 还是 Deno?
开发语言·javascript·node.js
指针满天飞2 小时前
Collections.synchronizedList是如何将List变为线程安全的
java·数据结构·list