【Python 教程】13_python数据类型进阶

    前面学习了python的7种基本数据类型(数字int类型、字符串str类型、布尔bool类型、列表list类型、元组tuple类型、字典dict类型、集合set类型)。下面进阶了解下python高级的数据结构(栈、队列、堆、树、图)特性及其操作用法。鉴于实用主义,常用的知识先更新,后续的知识及时补充学习更新知识体系。

1、栈(stack)

GitHub代码commits id:426eb81
    栈是一种后进先出(FILO)的数据结构,可以操作列表来实现栈的数据结构特性。删除的元素相当于是删掉了栈尾的元素。

# 1.栈:FILO(先进后出)
class Stack():
    def __init__(self, size):
        self.stack131 = []
        self.top = -1
        self.size = size

    def isfull(self):
        return self.top + 1 == self.size

    def isempty(self):
        return self.top == '-1'

    # 入栈前先检查栈是否已满
    def push_stack(self, x):  
        if self.isfull():
            raise Exception("statck is full")
        else:
            self.stack131.append(x)
            self.top = self.top + 1

    # 出栈之前检查栈是否为空
    def pop_statck(self):   
        if self.isempty():
            raise Exception("stack is empty")
        else:
            self.top = self.top - 1
            self.stack131.pop()

    def show_stack(self):
        print(self.stack131)


if __name__ == "__main__":
    s = Stack(10)
    s.show_stack()
    for i in range(6): 
        s.push_stack(i)
    s.show_stack()
    for i in range(3):
        s.pop_statck()
    s.show_stack()
    print("stack FILO is end.......")

2、队列(queue)

GitHub代码commits id:6367333
    队列是一种后进先出(FIFO)的数据结构,可以操作列表来实现栈的数据结构特性。新增的元素是添加的队列结尾的元素,出队列的元素相当于是删掉了对列前面的元素。

# 2.队列:FIFO(先进先出)
class Queue():
    def __init__(self, size):
        self.queue132 = []
        self.front = -1
        self.rear = -1
        self.size = size

    def isfull(self):
        return self.rear - self.front + 1 == self.size

    def isempty(self):
        return self.front == self.rear

    # 入队列
    def enqueue(self, x):
        if self.isfull():
            raise Exception("queue is full")
        else:
            self.queue132.append(x)
            self.rear = self.rear + 1

    # 出队列
    def dequeue(self):
        if self.isempty():
            raise Exception("queue is empty")
        else:
            self.queue132.pop(0)
            self.front = self.front + 1

    def show_queue(self):
        print(self.queue132)

if __name__ == "__main__":
    s = Stack(10)
    s.show_stack()
    for i in range(6): 
        s.push_stack(i)
    s.show_stack()
    for i in range(3):
        s.pop_statck()
    s.show_stack()
    print("stack FILO is end.......")

    q = Queue(7)
    q.show_queue()
    for i in range(6):
        q.enqueue(i)
    q.show_queue()
    for i in range(3):
        q.dequeue()
    q.show_queue()
 

3、堆(待续…)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值