小刘总KKB之python数据结构(一)

栈的python实现

# 创建class Stack

# python 🔪 stack 
class Stack:
    # 初始化栈
    def __init__(self):
        self.items = []

    # 判断栈是否为空
    def isEmpty(self):
        return self.items == []  # True False
# [1,2,3,4] append 
    # 入栈
    def push(self, item):
        self.items.append(item)
# [1,2,3] -> [1,2]
    # 出栈
    def pop(self):
        self.items.pop()
# [1,2,3,4]  len()=4 
## 0,1,2,3
    # 返回栈顶的元素
    def peek(self):
        return self.items[len(self.items) - 1]

    # 返回栈中元素的数目
    def size(self):
        return len(self.items)
s = Stack()
# s.isEmpty()
s.push('I')
s.push('like')
s.push('python')
s.pop()
s.peek()
s.size()

队列的python实现

class Queue:
    def __init__(self):
        self.items = []
    
    # 判断是否为空队列
    def isEmpty(self):
        return self.items == []
# [1,2,3,4]
    # 入队列
    def enqueue(self, item):
        self.items.insert(0, item)
# [1,2,3] -> [1,2]
    # 出队列
    def dequeue(self):
        return self.items.pop()

    # 队列的长度
    def size(self):
        return len(self.items)
q = Queue()
q.isEmpty()

q.enqueue('I')
q.enqueue('like')
q.enqueue('python')
q.size()
q.dequeue()

双端队列的python实现

class Deque:
    def __init__(self):
        self.items = []

    # 判断是否为空
    def isEmpty(self):
        return self.items == []

    # 从前端插入数据
    def addFront(self, item):
        self.items.append(item)
        
# [5,4,1,2,3] -> [5,4,1,2] -> [4,1,2]

    # 从尾端插入数据
    def addRear(self, item):
        self.items.insert(0, item)

    # 从前端删除数据
    def removeFront(self):
        return self.items.pop()

    # 从尾端删除数据
    def removeRear(self):
        return self.items.pop(0)

    # 队列的长度
    def size(self):
        return len(self.items)
d = Deque()
d.isEmpty()
d.addFront('I')
d.addFront('like')
d.addRear('Python')
d.removeFront()

链表的结点类Node

class Node:
    def __init__(self, initdata):
        self.data = initdata   # 数据域
        self.next = None       # 指针域

    # 获取节点的值
    def getData(self):
        return self.data

    # 获取下一个节点地址
    def getNext(self):
        return self.next

    # 设置节点的值
    def setData(self, newData):
        self.data = newData

    # 设置节点指向
    def setNext(self, newnext):
        self.next = newnext
temp1 = Node(93)
temp2 = Node(94)
temp3 = Node(95)

temp1.next = temp2
temp2.next = temp3
temp1.setNext(temp3)
temp1.getNext().getData()

链表的构造功能类

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值