美文网首页
P 数据结构 | 栈与队列

P 数据结构 | 栈与队列

作者: Ricsy | 来源:发表于2019-10-05 22:08 被阅读0次


一、栈

类似杯子装水

可以通过顺序表、单链表等线性表的进一步封装实现

eg:

class Stack:
    """
    栈
    1. 用列表实现,选择尾插法 O(1)
    2. 用链表实现,选择头插法 O(1)
    """
    def __init__(self):
        # self.__items = SingleLinkList()
        self.__items = []

    def is_empty(self):
        return self.__items == []

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

    def push(self, item):
        self.__items.append(item)   # O(1),尾插法
        # self.__items.insert(0, item)  # O(n),头插法

    def pop(self):
        return self.__items.pop()  # O(1)
        # return self.__items.pop(0)   # O(n)

    def peek(self):
        return self.__items[-1]
        # return self.__items[len(self.__items)-1]


if __name__ == '__main__':
    stack = Stack()
    stack.push('hello')
    print(stack._Stack__items)

二、队列

一种容器

eg:

class Queue:
    """
    队列
    """
    def __init__(self):
        # self.__items = SingleLinkList()
        self.__items = []

    def is_empty(self):
        return self.__items == []

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

    def enqueue(self, item):
        self.__items.append(item)   # O(1),尾插法
        # self.__items.insert(0, item)  # O(n),头插法

    def dequeue(self):
        # return self.__items.pop()  # O(1)
        return self.__items.pop(0)   # O(n)


if __name__ == '__main__':
    queue = Queue()
    queue.enqueue('hello')
    print(queue._Queue__items)

1.1 双端队列

eg:

class Deque:
    """
    队列
    """
    def __init__(self):
        # self.__items = SingleLinkList()
        self.__items = []

    def is_empty(self):
        return self.__items == []

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

    def add_front(self, item):
        self.__items.insert(0, item)  # O(n),头插法

    def add_rear(self, item):
        self.__items.append(item)   # O(1),尾插法

    def remove_front(self):
        return self.__items.pop(0)   # O(n)

    def remove_rear(self):
        return self.__items.pop()  # O(1)


if __name__ == '__main__':
    deque = Deque()
    deque.add_front('hello')
    print(deque._Deque__items)

更新中......


相关文章

  • P 数据结构 | 栈与队列

    一、栈 类似杯子装水 可以通过顺序表、单链表等线性表的进一步封装实现 eg: 二、队列 一种容器 eg: 1.1 ...

  • Algorithm小白入门 -- 队列和栈

    队列和栈队列实现栈、栈实现队列单调栈单调队列运用栈去重 1. 队列实现栈、栈实现队列 队列是一种先进先出的数据结构...

  • 文章列表

    基本数据结构 栈 队列 双端队列 无序链表 有序链表 递归 递归 搜索与排序 搜索

  • Axure的另类学习法(一)——队列与栈

    在学习数据结构时,书中提到了两种最基本的数据结构“队列”与“栈”。 于是,想用Axure来实现下队列和栈的两种基本...

  • 集合相关数据结构与算法

    队列 栈数据结构 比较算法 Collections Collection与Collections的区别?Colle...

  • 队列

    队列,是一个先进先出的数据结构,与栈一样,队列也是一种数组与链表的一种的受限操作所形成的特殊数据结构。 相比于栈...

  • 数组队列如何手撕?解密ArrayBlockingQueue的实现

    队列 聊起队列,你一定会联想到一个与队列相似的数据结构:栈。 为了更好的理解什么是队列,我们将它和栈来比较一下: ...

  • 技术面试和笔试资料

    P4 QA1、队列和栈有什么区别? 队列和栈是两种不同的数据容器。队列是一种先进先出的数据结构;它在两端进行操作,...

  • 【JS基础进阶】(五)JavaScript栈内存与堆内存

    (一)堆(heap),栈(stack)与队列(queue) 栈数据结构 JavaScript中并没有严格意义上区分...

  • 栈和队列—什么是栈

    栈和队列是两种重要的数据结构 从数据结构角度看,栈和队列也是线性表,其特殊性在于栈和队列的基本操作是线性表操作的子...

网友评论

      本文标题:P 数据结构 | 栈与队列

      本文链接:https://www.haomeiwen.com/subject/fuskpctx.html