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

时间:2024-10-25 19:22:48

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

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



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

相关文章