最近一直在学习Python和Perl这两门语言,两者共同点很多,也有不多。希望通过这样的模拟练习可以让自己更熟悉语言,虽然很多时候觉得这样用Python或者Perl并没有体现这两者的真正价值。

  1. #! /usr/bin/env python
  2. # DataStructure Linkedlist
  3.  
  4. class Node:
  5. """
  6. Member Variable:
  7. 1. next
  8. 2. data
  9. """
  10. def __init__(self, data):
  11. self.data = data
  12. self.next = None
  13.  
  14. def __str__(self):
  15. return "NodeInfo: data=%d, next_id=%d" % (self.data, id(self.next))
  16.  
  17. class LinkedList:
  18. """
  19. Member Variable:
  20. 1.head
  21. 2.cur
  22. """
  23. def __init__(self):
  24. self.head = Node(0)
  25. self.cur = self.head;
  26.  
  27. def __init__(self, data=None):
  28. if data is not None:
  29. self.head = Node(1)
  30. newNode = Node(data)
  31. self.head.next = newNode
  32. self.cur = self.head.next
  33. else :
  34. self.head = Node(0)
  35. self.cur = self.head;
  36.  
  37. def __str__(self):
  38. tmp = "The List has %d nodes.\n" % self.head.data
  39. Nodetmp = self.head.next
  40. while Nodetmp is not None:
  41. tmp += "->%d" % Nodetmp.data
  42. Nodetmp = Nodetmp.next
  43. return tmp
  44.  
  45. def Insert(self, data, pos=-1):
  46. if pos > self.head.data :
  47. print "Out of range"
  48. return
  49. newNode = Node(data)
  50. if pos >= 0:
  51. Nodetmp = self.head.ext
  52. while pos :
  53. Nodetmp = Nodetmp.Next
  54. pos -= 1
  55. newNode.next = Nodetmp.next
  56. Nodetmp.next = newNode
  57. else:
  58. self.cur.next = newNode
  59. self.cur = self.cur.next
  60. self.head.data += 1
  61.  
  62. def Remove(self, data, pos=0):
  63. if pos >= self.head.data :
  64. print "Out of range"
  65. return
  66. Nodetmp = self.head
  67. beg = pos
  68. while pos >= 1:
  69. Nodetmp = Nodetmp.next
  70. pos -= 1
  71. while Nodetmp.next is not None:
  72. if Nodetmp.next.data == data :
  73. break
  74. Nodetmp = Nodetmp.next
  75. Nodetmp.next = Nodetmp.next.next
  76. self.head.data -= 1
  77. if beg == self.head.data :
  78. self.cur = Nodetmp.next
  79.  
  80. def Find(self, data, pos=0):
  81. if pos > self.head.data:
  82. print "Out of range"
  83. return
  84. Nodetmp = self.head
  85. while pos :
  86. Nodetmp = Nodetmp.next
  87. pos -= 1
  88. while Nodetmp.next is not None:
  89. if Nodetmp.data == data :
  90. break
  91. Nodetmp = Nodetmp.next
  92. return Nodetmp
  93.  
  94. def GetLinkSize(self):
  95. return self.head.data
  96.  
  97. if __name__ == "__main__" :
  98. Lst = LinkedList()
  99. for i in range(10) :
  100. Lst.Insert(i)
  101. for i in range(1,10,2) :
  102. Lst.Insert(i)
  103. print Lst
  104. tmp = Lst.Find(3, 10)
  105. print tmp.next
  106. Lst.Remove(1, 10)
  107. print Lst
  108. Lst.Insert(4)
  109. print Lst

运行截图如下。

【DataStructure In Python】Python模拟链表的更多相关文章

  1. 用python实现模拟登录人人网

    用python实现模拟登录人人网 字数4068 阅读1762 评论19 喜欢46 我决定从头说起.懂的人可以快速略过前面理论看最后几张图. web基础知识 从OSI参考模型(从低到高:物理层,数据链路 ...

  2. python数据结构之链表(一)

    数据结构是计算机科学必须掌握的一门学问,之前很多的教材都是用C语言实现链表,因为c有指针,可以很方便的控制内存,很方便就实现链表,其他的语言,则没那么方便,有很多都是用模拟链表,不过这次,我不是用模拟 ...

  3. Python requests模拟登录

    Python requests模拟登录 #!/usr/bin/env python # encoding: UTF-8 import json import requests # 跟urllib,ur ...

  4. python urllib2 模拟网站登陆

    python urllib2 模拟网站登陆 1. 可用浏览器先登陆,然后查看网页源码,分析登录表单 2. 使用python urllib2,cookielib 模拟网页登录 import urllib ...

  5. Python实现模拟登陆

    大家经常会用Python进行数据挖掘的说,但是有些网站是需要登陆才能看到内容的,那怎么用Python实现模拟登陆呢?其实网路上关于这方面的描述很多,不过前些日子遇到了一个需要cookie才能登陆的网站 ...

  6. Python中模拟enum枚举类型的5种方法分享

    这篇文章主要介绍了Python中模拟enum枚举类型的5种方法分享,本文直接给出实现代码,需要的朋友可以参考下   以下几种方法来模拟enum:(感觉方法一简单实用) 复制代码代码如下: # way1 ...

  7. 【小白学爬虫连载(10)】–如何用Python实现模拟登陆网站

    Python如何实现模拟登陆爬取Python实现模拟登陆的方式简单来说有三种:一.采用post请求提交表单的方式实现.二.利用浏览器登陆网站记录登陆成功后的cookies,采用get的请求方式,传入c ...

  8. python 怎么模拟加header(如User-Agent、Content-Type等等)

    # -*- coding: cp936 -*- #python 27 #xiaodeng #python 怎么模拟加header(如User-Agent.Content-Type等等) #办法一: i ...

  9. python爬虫模拟登陆

    python爬虫模拟登陆 学习了:https://www.cnblogs.com/chenxiaohan/p/7654667.html  用的这个 学习了:https://www.cnblogs.co ...

  10. 【爬虫】python requests模拟登录知乎

    需求:模拟登录知乎,因为知乎首页需要登录才可以查看,所以想爬知乎上的内容首先需要登录,那么问题来了,怎么用python进行模拟登录以及会遇到哪些问题? 前期准备: 环境:ubuntu,python2. ...

随机推荐

  1. Oracle——事务(Transaction)

    事务: 事务是指作为单个逻辑工作单元执行的一组相关操作. 这些操作要求全部完成或者全部不完成. 使用事务的原因:保证数据的安全有效. 事务的四个特点:(ACID) 1.原子性(Atomic):事务中所 ...

  2. iBeacon 开发笔记

    iBeacon开发笔记 2015.10.19 airlocate ========= airlocate显示如何使用这个监控范围clbeaconregions. 代码还提供了一个例子,你如何能校准和配 ...

  3. unity发布ios游戏总结

    自己做了几个ios的小游戏,因此总结了一点经验 判断按钮要用unity里面的button不要用OnMouseDown()之类的函数,否则拒绝原因为缺少ios特征 排行榜之类的本地存储数据,不要用本地本 ...

  4. hibernate初探

    1.在MyEclipse Datebase Explorer 页面中新创建一个连接数据库“DB Browser”的XX,如起名“register”2.新建项目->右键Properties-> ...

  5. indeed 第二次笔试题

    1. Maximal Values 很简单,从前往后扫,找满足的,O(n),很容易就过掉了. maxn = 100. 没啥难点. 2. Bi-gram 用map统计个数,从前往后扫,每2个字符作为一个 ...

  6. PHP中使用curlL实现GET和POST请求的方法

    基本结构 (1)初始化 curl_init() (2)设置变量 curl_setopt() .最为重要,一切玄妙均在此.有一长串cURL参数可供设置,它们能指定URL请求的各个细节.要一次性全部看完并 ...

  7. node.js 安装express 提示 command is not found

    肯定有遇到这样的问题. 在执行express -e app时,出现 command is not found 此时需要执行 : $ npm install -g express-generator 你 ...

  8. javascript中的sort()方法

    现在在学习javascript中,发现sort()函数是有点奇怪的东西(可能是本人水平的问题-_-!),于是就在这里记录一下自己找到的东西吧.sort()这个方法的参数很奇怪,必须是函数,但也是可选参 ...

  9. Linux下的ntp时钟同步问题

    前段时间,项目中有个需求,需要将linux和windows的时间进行同步,网上也有很多类似时钟同步的帖子,大致类似:不过本次的linux的机器有点特殊,没有service命令,而且要求在另一台suse ...

  10. lnmp 虚拟主机配置及重写

    lnmp安装与调试,请看 http://www.cnblogs.com/lin3615/p/4376224.html 虚拟主机的配置编辑nginx配置文件 nginx.conf此为主配置文件 vim ...