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

#! /usr/bin/env python
# DataStructure Linkedlist class Node:
"""
Member Variable:
1. next
2. data
"""
def __init__(self, data):
self.data = data
self.next = None def __str__(self):
return "NodeInfo: data=%d, next_id=%d" % (self.data, id(self.next)) class LinkedList:
"""
Member Variable:
1.head
2.cur
"""
def __init__(self):
self.head = Node(0)
self.cur = self.head; def __init__(self, data=None):
if data is not None:
self.head = Node(1)
newNode = Node(data)
self.head.next = newNode
self.cur = self.head.next
else :
self.head = Node(0)
self.cur = self.head; def __str__(self):
tmp = "The List has %d nodes.\n" % self.head.data
Nodetmp = self.head.next
while Nodetmp is not None:
tmp += "->%d" % Nodetmp.data
Nodetmp = Nodetmp.next
return tmp def Insert(self, data, pos=-1):
if pos > self.head.data :
print "Out of range"
return
newNode = Node(data)
if pos >= 0:
Nodetmp = self.head.ext
while pos :
Nodetmp = Nodetmp.Next
pos -= 1
newNode.next = Nodetmp.next
Nodetmp.next = newNode
else:
self.cur.next = newNode
self.cur = self.cur.next
self.head.data += 1 def Remove(self, data, pos=0):
if pos >= self.head.data :
print "Out of range"
return
Nodetmp = self.head
beg = pos
while pos >= 1:
Nodetmp = Nodetmp.next
pos -= 1
while Nodetmp.next is not None:
if Nodetmp.next.data == data :
break
Nodetmp = Nodetmp.next
Nodetmp.next = Nodetmp.next.next
self.head.data -= 1
if beg == self.head.data :
self.cur = Nodetmp.next def Find(self, data, pos=0):
if pos > self.head.data:
print "Out of range"
return
Nodetmp = self.head
while pos :
Nodetmp = Nodetmp.next
pos -= 1
while Nodetmp.next is not None:
if Nodetmp.data == data :
break
Nodetmp = Nodetmp.next
return Nodetmp def GetLinkSize(self):
return self.head.data if __name__ == "__main__" :
Lst = LinkedList()
for i in range(10) :
Lst.Insert(i)
for i in range(1,10,2) :
Lst.Insert(i)
print Lst
tmp = Lst.Find(3, 10)
print tmp.next
Lst.Remove(1, 10)
print Lst
Lst.Insert(4)
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 Text Slowly

    When  oracle text more and more slowly, execute the following script: ANALYZE TABLE Table_Name COMPU ...

  2. 第22条:理解NSCopying协议

    如果想自定义类支持拷贝操作,那就要实现NSCopying协议(而不是复写copy方法)或 NSMutableCopying的协议. 不可变版本的拷贝: NSCopying协议,该协议只有一个方法: - ...

  3. IOPS和Throughput

    IOPS和Throughput吞吐量两个参数是衡量存储性能的主要指标.IOPS表示存储每秒传输IO的数量,Throughput吞吐量则表示每秒数据的传输总量.两者在不同的情况下都能表示存储的性能状况, ...

  4. thinkphp验证码的实现

    两种验证码验证实现,一种直接在form表单提交按钮实现验证,一种使用ajax传递参数实现验证: 1.直接在form表单提交按钮实现验证,在控制器VerifyController.class.php中写 ...

  5. Delphi中的GetEnumName和GetEnumValue的使用方法

    利用TypInfo单元的GetEnumName和GetEnumValue可以遍历任意枚举类型,并获取其名称和值.下面是示例Demo. uses TypInfo; ... procedure TForm ...

  6. 【pyhton】【转】修改递归次数

    import sys sys.setrecursionlimit(1500) # set the maximum depth as 1500 def recursion(n): if(n <= ...

  7. 针对目前高校移动App的火热,哥决定点一把火

    最近正在做市场调研,还请众位大哥大姐们帮忙投个票,求扩散 http://user.qzone.qq.com/717010686/vote/00000000feb6bc2a3ebd1e53

  8. Unity3d Shader开发(四)UsePass ,GrabPass ,SubShader Tags

    (一)UsePass 命令 使用 来自另一个着色器的命名通道. Syntax 语法 UsePass "Shader/Name" 插入所有来自给定着色器中的给定名字的通道.Shade ...

  9. Unity3d Shader开发(三)Pass(Color, Material, Lighting )

    材质和灯光参数被用于控制内置顶点光照.顶点光照是Direct3D/OpenGL标准的按每顶点计算的光照模型.光照打开时,光照受材质块,颜色材质和平行高光命令的影响. 每像素光照常被实现为自定义顶点/片 ...

  10. ms flexbox 布局 (ko list)

    <!DOCTYPE html> <html> <head> <title></title> <script src="js/ ...