关闭

Python数据结构——栈

标签: 数据结构
184人阅读 评论(0) 收藏 举报
分类:

用两种数据结构实现栈
1、使用list,代码如下:

class Stack :
  # 初始化一个空的栈
  def __init__( self ):
    self._theItems = list()

  #返回True或False.
  def isEmpty( self ):
    return len( self ) == 0

  # 返回栈中元素的个数
  def __len__ ( self ):
    return len( self._theItems )

 #返回栈顶元素
  def peek( self ):
    assert not self.isEmpty(), "栈不能为空"
    return self._theItems[-1]

 # 删除并返回栈顶元素
  def pop( self ):
    assert not self.isEmpty(), "无法从空栈删除一个元素"
    return self._theItems.pop()

 # 让一个元素入栈
  def push( self, item ):
    self._theItems.append( item )

它的使用及控制台输出:

stack = Stack()
stack.push(123)
stack.push("PHP")
stack.push("c语言")
print(len(stack))
print(stack.peek())
print(stack.pop())
print(len(stack))

这里写图片描述

2、使用链表实现栈,代码如下:

class Stack2 :
 # 创建一个空栈.
  def __init__( self ):
   self._top = None
   self._size = 0

# 如果栈空返回True否则返回False 
  def isEmpty( self ):
    return self._top is None

 # 返回栈中元素数量
  def __len__( self ):
    return self._size

 # 返回栈中顶部元素.
  def peek( self ):
    assert not self.isEmpty(), "Cannot peek at an empty stack"
    return self._top.item

 # 删除并返回栈顶部元素
  def pop( self ):
    assert not self.isEmpty(), "Cannot pop from an empty stack"
    node = self._top
    self.top = self._top.next
    self._size -= 1
    return node.item

 # 把一个元素推入栈顶
  def push( self, item ) :
    self._top = _StackNode( item, self._top )
    self._size += 1

 # 创建栈节点的私有存储类
class _StackNode :
 def __init__( self, item, link ) :
   self.item = item
   self.next = link

Stack2类的构造器为每个栈创建了两个实例变量。top用来保存链表,size跟踪栈中元素的数量。
StackNode 类创建链表节点

Stack2类的使用及控制台输出如下:

stack2 = Stack2()
stack2.push(199)
stack2.push("apple")
stack2.push("香蕉")
print(len(stack2))
print(stack2.peek())
print(stack2.pop())
print(len(stack2))

这里写图片描述

1
0
查看评论

Python实现基本数据结构---栈操作

#! /usr/bin/env python #coding=utf-8 #Python实现基本数据结构---栈操作 class Stack(object): def __init__(self,size): self.size = size self.sta...
  • will130
  • will130
  • 2015-04-25 14:14
  • 647

python数据结构学习笔记-4-堆栈 队列

堆栈、队列
  • hjh00
  • hjh00
  • 2015-11-02 17:19
  • 1222

使用python实现数据结构 -- Stack(栈)

栈是一种先进后出的数据结构,在计算机中应用广泛,比如函数的调用就是一个入栈出栈的过程,本文介绍使用python实现一个简单栈的过程。栈的调用过程以及内部数据变化如下: stack.py的定义如下: 对栈进行一些测试: 运行结果如下:
  • sjhuangx
  • sjhuangx
  • 2016-10-29 21:44
  • 1367

数据结构(5)--栈的定义以及相关操作的实现

 参考书籍:数据结构(C语言版) 严蔚敏 吴伟民编著 清华大学出版社 1.栈的定义     栈(stack)是限定在表尾一端进行插入或删除操作的线性表。在栈中,允许插入和删除操作的一端称为栈顶(top),而另一端称为栈底(bottom)。不含元素的栈称为空栈。...
  • u010366748
  • u010366748
  • 2016-02-05 22:26
  • 1677

数据结构学习之路-第三章:栈的应用

【 声明:版权所有,转载请标明出处,请勿用于商业用途。  联系信箱:libin493073668@sina.com】 前言: 前面已经介绍过栈的相关操作的具体实现,那么现在就按照书上的几个例子来具体讲一下栈的具体用处。 没有看之前我写的栈的实现...
  • libin1105
  • libin1105
  • 2015-09-08 19:15
  • 1314

用Python实现基本数据结构——栈与队列

转自:http://sjlovechina.blog.163.com/blog/static/123368598201111169211721/ 最近学习《算法导论》,看了栈与队列,觉得用C实现没意思(以前实现过,不过不能通用),遂用最近在研究的Python实现这两个基本的数据结构!  ...
  • shanliangliuxing
  • shanliangliuxing
  • 2013-10-14 18:49
  • 1289

常见数据结构(一)-栈,队列,堆,哈希表

本文介绍几种常见的数据结构:栈、队列、堆、哈希表,等等。
  • h3243212
  • h3243212
  • 2016-10-14 00:35
  • 3622

【数据结构学习1】关于数据结构的栈的理解

数据结构以前学过,但是当时理解不是很深刻。执政党
  • w815878564
  • w815878564
  • 2014-11-19 20:59
  • 518

数据结构之 栈(C语言实现)

数据结构之 栈(C语言实现)1.栈的模型栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶(top)。对栈的基本操作有push(进栈)和pop(出栈),前者相当于插入,后者则是删除最后插入的元素。最后插入的元素可以通过使用top例程在执行pop之前进行考察。对空栈...
  • men_wen
  • men_wen
  • 2017-03-14 23:23
  • 361

数据结构(栈,队列,链表,二叉树)

栈栈作为一种数据结构,用途十分广泛。在回调函数等许多场景中都有应用。我们需要了解它的基本用途,那就是先进后出和队列的先进先出正好相反。最近在学习数据结构和算法,于是自己来实现。我特别喜欢C语言的指针,我发现很好用,于是用C++来实现一个简单的范例。 主要实现就是函数就是Pop,Push Push...
  • u013766436
  • u013766436
  • 2016-05-04 17:03
  • 1917
    个人资料
    • 访问:9437次
    • 积分:358
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:5篇
    • 译文:14篇
    • 评论:3条