python数据结构之栈,双端队列

python数据结构之栈,双端队列。栈

栈(stack),有个别地点叫作客栈,是壹种容器,可存入数据成分、访问成分、删除元素,它的风味在于只好同目的在于容器的一端(称为栈顶端目的,意大利共和国语:top)实行进入数据(希腊语:push)和输出数据(葡萄牙共和国(República Portuguesa)语:pop)的演算。未有了职分概念,保障别的时候能够访问、删除的因素都以从前最后存入的那个成分,分明了一种暗许的拜会顺序。

出于栈数据结构只允许在一端进行操作,由此依据后进先出的法则运作。

澳门葡京备用网址 ,沾满完整代码:

class Stack(object):
    def __init__(self):

  #初始化
        self.items=[]
    def empty(self):

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

  #压栈
        self.items.append(item)
    def pop(self):

  #进栈
        return  self.items.pop()
    def peek(self):

  #返回栈顶
        return self.items[len(self.items) - 1]
    def size(self):

  #返回长度
        return len(self.items)
if __name__== "__main__":

  #站函数
    stack = Stack()
    stack.push("hello")
    stack.push("python")
    stack.push("itcast")
    print (stack.size())
    print (stack.peek())
    print (stack.pop())
    print (stack.pop())
    print (stack.pop())

  • 简介:

    • 栈(stack),某个地点叫作货仓,是一种容器,可存入数据成分、访问元素、删除成分,它的风味在于只好同意在容器的一端(称为栈顶端目标,拉脱维亚语:top)实行进入数据(塞尔维亚语:push)和输出数据(乌Crane语:pop)的演算。没有了岗位概念,保证其余时候能够访问、删除的成分都是原先最后存入的格外成分,确定了一种暗中同意的访问顺序。
    • 出于栈数据结构只允许在一端实行操作,由此依照后进先出(LIFO, Last
      In First Out)的法则运作。
  • 栈的操作:

    • Stack() 创立多少个新的空栈
    • push(item) 增加3个新的成分item到栈顶
    • pop() 弹出栈顶成分
    • peek() 再次来到栈顶成分
    • is_empty() 剖断栈是不是为空
    • size() 再次回到栈的成分个数
  • 代码完成:

class Stack(object):
    """栈"""
    def __init__(self):
         self.items = []

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

    def push(self, item):
        """加入元素"""
        self.items.append(item)

    def pop(self):
        """弹出元素"""
        return self.items.pop()

    def peek(self):
        """返回栈顶元素"""
        return self.items[len(self.items)-1]

    def size(self):
        """返回栈的大小"""
        return len(self.items)

if __name__ == "__main__":
    stack = Stack()
    stack.push("hello")
    stack.push("world")
    stack.push("itcast")
    print stack.size()
    print stack.peek()
    print stack.pop()
    print stack.pop()
    print stack.pop()

队列

  • 简介:

    • 队列(queue)是只允许在壹端举行扦插操作,而在另一端进行删减操作的线性表。
    • 队列是壹种先进先出的(First In First
      Out)的线性表,简称FIFO。允许插入的壹端为队尾,允许删除的一端为队头。队列差异意在中间地点开始展览操作!要是队列是q=(a一,a二,……,an),那么a一正是队头成分,而an是队尾成分。那样我们就足以去除时,总是从a一初步,而插入时,总是在队列最终。那也正如相符我们司空眼惯生活中的习于旧贯,排在第二个的事先出列,最终来的当然排在队5最后
  • 队列的操作:

    • Queue() 创立三个空的行列
    • enqueue(item) 往队列中增添四个item成分
    • dequeue() 从队列尾部删除叁个成分
    • is_empty() 决断2个队列是或不是为空
    • size() 再次回到队列的分寸
  • 代码实现:

class Queue(object):
    """队列"""
    def __init__(self):
        self.items = []

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

    def enqueue(self, item):
        """进队列"""
        self.items.insert(0,item)

    def dequeue(self):
        """出队列"""
        return self.items.pop()

    def size(self):
        """返回大小"""
        return len(self.items)

if __name__ == "__main__":
    q = Queue()
    q.enqueue("hello")
    q.enqueue("world")
    q.enqueue("itcast")
    print q.size()
    print q.dequeue()
    print q.dequeue()
    print q.dequeue()

双端队列

  • 简介:

    • 双端队列(deque,全名double-ended
      queue),是一种具有队列和栈的习性的数据结构。
    • 双端队列中的元素得以从两者弹出,其范围插入和删除操作在表的两边举办。双端队列能够在队列放4一端入队和出队。
  • 操作:

    • Deque() 创立三个空的双端队列
    • add_front(item) 从队头出席贰个item成分
    • add_rear(item) 从队尾参与贰个item成分
    • remove_front() 从队头删除三个item成分
    • remove_rear() 从队尾删除二个item成分
    • is_empty() 判别双端队列是还是不是为空
    • size() 重临队列的大小
  • 代码完毕:

class Deque(object):
    """双端队列"""
    def __init__(self):
        self.items = []

    def is_empty(self):
        """判断队列是否为空"""
        return self.items == []

    def add_front(self, item):
        """在队头添加元素"""
        self.items.insert(0,item)

    def add_rear(self, item):
        """在队尾添加元素"""
        self.items.append(item)

    def remove_front(self):
        """从队头删除元素"""
        return self.items.pop(0)

    def remove_rear(self):
        """从队尾删除元素"""
        return self.items.pop()

    def size(self):
        """返回队列大小"""
        return len(self.items)


if __name__ == "__main__":
    deque = Deque()
    deque.add_front(1)
    deque.add_front(2)
    deque.add_rear(3)
    deque.add_rear(4)
    print deque.size()
    print deque.remove_front()
    print deque.remove_front()
    print deque.remove_rear()
    print deque.remove_rear()

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website