1. #! /usr/bin/env python
  2.  
  3. ###
  4. ### Linked List python implementation
  5. ###
  6. ### @reference Data Structures and Algorithm Analysis in C:Second Edition : Mark Allen Weiss
  7. ### @date Tue Sep 29 20:51:55 CST 2015
  8.  
  9. #node structure
  10. class Node(object):
  11.  
  12. def __init__(self, value, p=None):
  13. self.element = value
  14. self.pNext = p
  15.  
  16. class LinkedList(object):
  17.  
  18. def __init__(self):
  19. self.head = None
  20.  
  21. def makeEmpty(self):
  22. self.head = None
  23.  
  24. def isEmpty(self):
  25. return self.head == None
  26.  
  27. def find(self, value):
  28. if self.isEmpty():
  29. print 'the linked list is empty !'
  30. return
  31. p = self.head
  32. while p != None:
  33. if p.element == value:
  34. #the index of the target in linkedlist
  35. return p
  36. p = p.pNext
  37. return -1
  38.  
  39. def insert(self, value):
  40. item = Node(value)
  41. if self.isEmpty():
  42. self.head = item
  43. else:
  44. p = self.head
  45. while p.pNext != None:
  46. p = p.pNext
  47. p.pNext = item
  48.  
  49. def deleteList(self):
  50. if self.isEmpty():
  51. print 'the linked list is empty !'
  52. else:
  53. p = self.head.pNext
  54. self.head = None
  55. while p != None:
  56. tmp = p.pNext
  57. p = None
  58. p=tmp
  59.  
  60. def delete(self, target):
  61. if self.isEmpty():
  62. print 'the linked list is empty !'
  63. else:
  64. p = self.findPrevious(target)
  65. if not self.isLast(p):
  66. tmpNode = p.pNext
  67. p.pNext = tmpNode.pNext
  68. tmpNode = None
  69. else:
  70. p.pNext = None
  71.  
  72. def isLast(self,p):
  73. return p.pNext == None
  74.  
  75. def findPrevious(self, target):
  76. if self.isEmpty():
  77. print 'the linked list is empty !'
  78. else:
  79. p = self.head
  80. while p != None and p.pNext.element != target:
  81. p = p.pNext
  82. return p
  83.  
  84. def debug(self):
  85. if self.isEmpty():
  86. print 'the linked list is empty !'
  87. else:
  88. p = self.head
  89. while p != None:
  90. print p.element
  91. p = p.pNext
  92. if p == None:
  93. print '-------------'
  94.  
  95. def initLinkedList(self,lists):
  96. for item in lists:
  97. self.insert(item)
  98.  
  99. obj=LinkedList()
  100. lists=[1,2,3,4,5,6,10,17]
  101. obj.initLinkedList(lists)
  102. #rs=obj.isEmpty()
  103. #print rs
  104. #rs=obj.find(17)
  105. #print rs
  106. #rs=obj.isLast(rs)
  107. #print rs
  108. #obj.debug()
  109. #rs=obj.find(17)
  110. #rs=obj.find(14)
  111. #rs=obj.findPrevious(10)
  112. #print rs
  113. #print rs.element
  114. #obj.delete(10)
  115. obj.deleteList()
  116. obj.debug()

python 实现单链表的更多相关文章

  1. Python实现单链表数据的添加、删除、插入操作

    Python实现单链表数据的添加.删除.插入操作 链表的定义: 链表(linked list)是由一组被称为结点的数据元素组成的数据结构,每个结点都包含结点本身的信息和指向下一个结点的地址.由于每个结 ...

  2. python实现单链表反转(经典笔试题)

    https://blog.csdn.net/su_bao/article/details/81072849 0.说在前面的话 链表结构,说难不难,说易不易,一定要亲自编程实现一下.其次就是一定要耐心, ...

  3. 数据结构与算法-python描述-单链表

    # coding:utf-8 # 单链表的相关操作: # is_empty() 链表是否为空 # length() 链表长度 # travel() 遍历整个链表 # add(item) 链表头部添加元 ...

  4. python实现单链表及链表常用功能

    单链表及增删实现 单链表高级功能实现:反序,找中间结点,检测环等 参考: https://github.com/wangzheng0822/algo

  5. 基于python实现单链表代码

    1 """ 2 linklist.py 3 单链表的构建与功能操作 4 重点代码 5 """ 6 7 class Node: 8 " ...

  6. python实现单链表的翻转

    #!/usr/bin/env python #coding = utf-8 class Node:     def __init__(self,data=None,next = None):      ...

  7. python实现单链表的反转

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #!/usr/bin/env python #coding = utf-8 ...

  8. 【算法编程 C++ python】单链表反序输出

    题目描述 输入一个链表,从尾到头打印链表每个节点的值.   以下方法仅仅实现了功能,未必最佳.在牛客网测试, C++:3ms 480k Python:23ms 5732k /** * struct L ...

  9. python实现 单链表的翻转

    #!/usr/bin/env python #coding = utf-8 class Node: def __init__(self,data=None,next = None): self.dat ...

随机推荐

  1. Cocos2D-X2.2.3学习笔记8(处理精灵单击、双击和三连击事件)

    我们依据上一次介绍的触屏事件和事件队列等知识来实现触屏的单击,双击,三连击事件. 下图为我们实现的效果图: 单击精灵跳跃一个高度, 双击精灵跳跃的高度比单击的高 三连击精灵跳跃的跟高 好了,開始动手吧 ...

  2. 开发汉澳即时通信网,2006年上线,QQ死期到了

    为汉澳sinox用户打造即时通信网让大家用上即时通信软件 近期腾讯关闭了linuxQQ登录,汉澳 sinox也登陆不上.非windows用户再也不能用上即时通信软件了! 这是多么可悲的事,可是我们必须 ...

  3. HBASE学习笔记--shell

    Hbase shell 启动 下载安装hbase client包,填写相关配置后进入,配置相关说明可以参见配置篇 指令:./bin/hbase shell 状态及配置信息查询 查询服务器状态 stat ...

  4. VMware vSphere Client为虚拟机制定物理网卡(图文并茂)

    1.首先,查看我的服务器有几张网卡,如下图共3张,接下来我将为虚拟主机制定一张网卡,以及为当中的两台虚拟的CentOS7各制定一张网卡. 2.打开“硬件”---->“网络”,如图,已经启用一张网 ...

  5. 监控concurrent 正在执行的sql

    SELECT a.sid, a.serial#, b.sql_text   FROM v$session a, v$sqltext b WHERE a.sql_address = b.address  ...

  6. 括号匹配算法 C语言实现

    #include <stdio.h> #include <malloc.h> //malloc,realloc #include <math.h> //含有over ...

  7. PHP之闭包详解

    匿名函数提到闭包就不得不想起匿名函数,也叫闭包函数(closures),貌似PHP闭包实现主要就是靠它.声明一个匿名函数是这样: $func = function() { }; //带结束符 可以看到 ...

  8. TLSAlloc()

    为什么要有TLS?原因在于,进程中的全局变量与函数内定义的静态(static)变量,是各个线程都可以访问的共享变量.在一个线程修改的内存内容,对所有线程都生效.这是一个优点也是一个缺点.说它是优点,线 ...

  9. poj 3323 Matrix Power Series (矩阵乘法 非递归形式)

    为了搞自动机+矩阵的题目,特来学习矩阵快速幂..........非递归形式的求Sum(A+A^2+...+A^k)不是很懂,继续弄懂................不过代码简洁明了很多,亮神很给力 # ...

  10. C语言入门(8)——形参与实参

    对于带参数的函数,我们需要在函数定义中指明参数的个数和每个参数的类型,定义参数就像定义变量一样,需要为每个参数指明类型,并起一个符合标识符命名规则的名字.例如: #include <stdio. ...