数据结构之堆栈和队列在python中的实现

1栈和队列是两种基本的数据结构

数据结构之-栈

1.1 栈(stacks)是一种只能通过访问其一端来实现数据存储与检索的线性数据结构,具有后进先出(last in first out,LIFO)的特征,仅能够在栈顶进行操作,,下面这张图展示了栈的工作特点:
在这里插入图片描述
仅能够在栈顶进行操作生活中的一个非常贴切的列子,玩羽毛球的同学都会买一筒羽毛球,羽毛球就是这种典型的堆栈结构。
在这里插入图片描述
1.2 基本用法

>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack
[3, 4, 5, 6, 7]
>>> stack.pop()
7
>>> stack
[3, 4, 5, 6]
>>> stack.pop()
6
>>> stack.pop()
5
>>> stack
[3, 4]

1.3一个实例说明

函数 说明
Stack() 创建堆栈
push(item) 向栈顶插入项
pop() 删除栈顶的项
clear() 清空堆栈
is-empty() 判断堆栈是否为空
size() 返回堆栈中的个数
top() 返回堆栈得项
print() 打印堆栈
class Stack(object):
    """堆栈"""
    def __init__(self, item = []):
        self.item = []
        if len(item):
            for i in item:
                self.item.append(i)

    def push(self, item):
            self.item.append(item)

    def clear(self):
        del self.item

    def is_empty(self):
        return self.size() == 0

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

    def print(self):
        print(self.item)

    def top(self):
        return self.item[-1]

    def pop(self):
        data = self.top()
        self.item.pop()
        return data

print("创建堆栈")
stack =  Stack([1,2,3])
stack.print()
print("向栈顶插入元素")
stack.push(4)
stack.print()
print("判断堆栈是否为空")
print(stack.is_empty())
print("返回堆栈中项的个数")
print(stack.size())
print("返回栈顶的项")
print(stack.top())
print("删除栈顶的项")
stack.pop()
stack.print()
print("清空堆栈")
print(stack.clear())

输出结果如下所示;
在这里插入图片描述

2.数据结构之-队列

2.1 队列定义:
队列是一种先进先出的线性表。它只允许在表的一端进行插入,在另一端删除元素。

在这里插入图片描述
在这里插入图片描述

2.2关于队列

>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.append("Terry")           # Terry arrives
>>> queue.append("Graham")          # Graham arrives
>>> queue.popleft()                 # The first to arrive now leaves
'Eric'
>>> queue.popleft()                 # The second to arrive now leaves
'John'
>>> queue                           # Remaining queue in order of arrival
deque(['Michael', 'Terry', 'Graham']) 

2.3 队列函数说明

函数 说明
Queue() 创建队列
enqueue(item) 向队列尾部插入元素
dequeue() 删除队列头部栈顶的元素
clear() 清空队列
is-empty() 判断队列是否为空
size() 返回队列中的个数
print() 打印队列
class Queue(object):
    """模拟队列"""
    def __init__(self, item = []):
        self.item = []
        if len(item):
            for i in item:
                self.item.append(i)

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

    def dequeue(self):
        self.item.pop(0)

    def clear(self):
        del self.item

    def is_empty(self):
        return self.size() == 0

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

    def print(self):
        print(self.item)

print("创建队列")
queue =  Queue([1,2,3])
queue.print()
print("向队列插入元素")
queue.enqueue(4)
queue.print()
print("从队列中删除元素")
queue.dequeue()
queue.print()
print("判断队列是否为空")
print(queue.is_empty())
print("返回队列中项的个数")
print(queue.size())
queue.print()
print("清空队列")
print(queue.clear())

在这里插入图片描述

欢迎大家提出错误!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章