# 栈
# 其实python里面的list就可以当栈使用啦,用collections.deque也可以
# 1. 入栈 list.append(item)
# 2. 出栈 item = list.pop()
# 3. 对于首元素出栈,还可以 item = list.pop(0) 和队列概念一样
# 4. 其实还可以任意元素出栈 item = list.pop(i) 相当于删除第i个元素
# 注意3,4是很耗时间的

栈可以方便用来判断一个字符串是否回文。

下面是基于栈的回文判断算法

 # 判断一个字符串是否回文(plalindrome 不是 Moslems =_=||)
# 如果一个字符串是回文的话,它必须是中间对称的
# 将前半部分入栈,再依次出栈,看看能否与mid之后的字符一一匹配 def is_Plalindrome_demo1(A):
mid = len(A)/2 # 5/2=2, 4/2=2
stack = []
for i in range(mid):
stack.append(A[i]) if len(A)%2 == 0: # 判断字符串的长度是奇数还是偶数
next = mid # 确定后半截字符串的起始下标
else:
next = mid + 1 top = mid-1
for i in range(next,len(A)):
if stack[top] != A[i]:
return False
top -= 1 return True

测试:

if __name__=="__main__":

    q = list("hahahahahahahahaha")
print is_Plalindrome_demo1(q)

手动实现栈

 # 简单的FILO栈类别
class Stack:
def __init__(self):
self.top = None # 指向栈顶
self.end = None # 指向栈底
self.count = 0 def push(self,data):
if self.end == None:
self.end = Node(data)
self.top = self.end
else:
temp = self.top # 保存当前栈顶
self.top = Node(data)
self.top.next = temp
self.count += 1 def pop(self):
if self.top == None:
raise "Error: top==None"
data = self.top.data
self.top = self.top.next
self.count -= 1
return data

python数据结构与算法——栈的更多相关文章

  1. python数据结构与算法

    最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...

  2. Python数据结构与算法之图的广度优先与深度优先搜索算法示例

    本文实例讲述了Python数据结构与算法之图的广度优先与深度优先搜索算法.分享给大家供大家参考,具体如下: 根据维基百科的伪代码实现: 广度优先BFS: 使用队列,集合 标记初始结点已被发现,放入队列 ...

  3. javascript数据结构与算法---栈

    javascript数据结构与算法---栈 在上一遍博客介绍了下列表,列表是最简单的一种结构,但是如果要处理一些比较复杂的结构,列表显得太简陋了,所以我们需要某种和列表类似但是更复杂的数据结构---栈 ...

  4. Python数据结构与算法--List和Dictionaries

    Lists 当实现 list 的数据结构的时候Python 的设计者有很多的选择. 每一个选择都有可能影响着 list 操作执行的快慢. 当然他们也试图优化一些不常见的操作. 但是当权衡的时候,它们还 ...

  5. Python数据结构与算法--算法分析

    在计算机科学中,算法分析(Analysis of algorithm)是分析执行一个给定算法需要消耗的计算资源数量(例如计算时间,存储器使用等)的过程.算法的效率或复杂度在理论上表示为一个函数.其定义 ...

  6. JavaScript数据结构与算法-栈练习

    栈的实现 // 栈类 function Stack () { this.dataStore = []; this.top = 0; // 栈顶位置 相当于length,不是索引. this.push ...

  7. JS数据结构与算法——栈

    JS数据结构与算法--栈 1.栈结构概念 栈(Stack)是一种先进后出(LIFO Last in First out)的线性表,先进栈的将会比后进栈的先出栈. 栈的限制是仅允许在一端进行插入和删除运 ...

  8. Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例

    本文实例讲述了Python数据结构与算法之图的最短路径(Dijkstra算法).分享给大家供大家参考,具体如下: # coding:utf-8 # Dijkstra算法--通过边实现松弛 # 指定一个 ...

  9. Python 数据结构和算法

    阅读目录 什么是算法 算法效率衡量 算法分析 常见时间复杂度 Python内置类型性能分析 数据结构 顺序表 链表 栈 队列 双端队列 排序与搜索 冒泡排序 选择排序 插入排序 希尔排序 快速排序 归 ...

随机推荐

  1. Bootstrap_下拉菜单

    在使用Bootstrap框架的下拉菜单时,必须调用Bootstrap框架提供的bootstrap.js文件. 一.普通下拉菜单 <div class="dropdown"&g ...

  2. System & Runtime &Math

    package com.shushine.framework.第七章Java标准类库;/** * * <p> * 描述该类情况 {@link 代表跟谁有关系} * </p> * ...

  3. Servlet 实现上传文件以及同时,写入xml格式文件和上传

    package com.isoftstone.eply.servlet; import java.io.BufferedReader; import java.io.BufferedWriter; i ...

  4. python的异常小结与assert

    异常的处理 一. 二. -----------------2016-4-20 18:04:06--

  5. table插件实现

    选择.取消.全选.全部取消.获取行ids /** * Created by lizongqiong on 2016/1/8. */ var $ = require('jquery'); var tab ...

  6. Java后台传前台json数组

    function checkStore(){ var flag=1; $.ajax({ url:"widget?type=shop_cart&ajax=yes&action= ...

  7. 习题-第1章了解ASP.NET MVC

    一.选择题 1.ASP.NET MVC自2007年首次公布预览以来,作为(    )的替代品,普及度已明显提高,现在很多大型Web应用程序都是使用这一技术构建的. A.ASP    B.ASP.NET ...

  8. Easy UI

    首先去Easy UI官网下载离线包 导入要用的js模块 <!DOCTYPE html> <html> <head lang="en"> < ...

  9. selenium 安装与 chromedriver安装

    直接使用pip安装 pip slenium 用 Chrome 浏览器来测试   from selenium import webdriver browser = webdriver.Chrome() ...

  10. C/C++-----------http协议发送字段,文件,单个和多张图片

    关于c/c++ 网络编程,无论在linux还是windows,要说到自由性,和安全性,socket无疑是比较好的!对于socket,因为它的传输协议只有两种tcp和udp,属于网络层,这里我们不去重点 ...