zoukankan      html  css  js  c++  java
  • python 实现无序列表

      1 # -*- coding:utf-8 -*-
      2 class Node:
      3     def __init__(self, initdata):
      4         self.data = initdata
      5         self.next = None
      6 
      7     def getData(self):
      8         return self.data
      9 
     10     def getNext(self):
     11         return self.next
     12 
     13     def setData(self, newdata):
     14         self.data = newdata
     15 
     16     def setNext(self, newnext):
     17         self.next = newnext
     18 
     19 
     20 class UnorderedList:
     21     def __init__(self):
     22         self.head = None
     23 
     24     def isEmpty(self):
     25         return self.head == None
     26 
     27     def add(self, item):
     28         temp = Node(item)
     29         temp.setNext(self.head)
     30         self.head = temp
     31 
     32     def size(self):
     33         current = self.head
     34         count = 0
     35         while current != None:
     36             count = count + 1
     37             current = current.getNext()
     38         return count
     39 
     40     def travel(self):
     41         current = self.head
     42         while current != None:
     43             print current.getData()
     44             current = current.getNext()
     45 
     46     def search(self, item):
     47         current = self.head
     48         found = False
     49         while current != None and not found:
     50             if current.getData() == item:
     51                 found = True
     52             else:
     53                 current = current.getNext()
     54         return found
     55 
     56     def remove(self, item):
     57         current = self.head
     58         previous = None
     59         found = False
     60         while not found:
     61             if current.getData() == item:
     62                 found = True
     63             else:
     64                 previous = current
     65                 current = current.getNext()
     66         if previous == None:
     67             self.head = current.getNext()
     68         else:
     69             previous.setNext(current.getNext())
     70 
     71     def append(self, item):
     72         temp = Node(item)
     73         if self.isEmpty():
     74             self.head = temp
     75         else:
     76             current = self.head
     77             while current.getNext() != None:
     78                 current = current.getNext()
     79             current.setNext(temp)
     80 
     81     def index(self, item):
     82         current = self.head
     83         count = 0
     84         found = False
     85         while current != None and not found:
     86             count += 1
     87             if current.getData() == item:
     88                 found = True
     89             else:
     90                 current = current.getNext()
     91         if found:
     92             return count
     93         else:
     94             raise ValueError, '%s is not in this unorderedList' %item
     95 
     96     def insert(self, pos, item):
     97         if pos <= 1:
     98             self.add(item)
     99         elif pos > self.size():
    100             self.append(item)
    101         else:
    102             temp = Node(item)
    103             count = 1
    104             previous = None
    105             current = self.head
    106             while count < pos:
    107                 count += 1
    108                 previous = current
    109                 current = current.getNext()
    110             previous.setNext(temp)
    111             temp.setNext(current)
    112 
    113 if __name__ == '__main__':
    114     t = UnorderedList()
    115     for i in range(10):
    116         t.append(i)
    117     print t.size()
    118     t.travel()
    119     print t.search(5)
    120     print t.index(3)
    121     t.remove(8)
    122     t.travel()
    123     t.insert(2, 12)
    124     t.travel()
  • 相关阅读:
    强化学习的基本迭代方法
    基于文本描述的事务聚类
    学习强化学习之前需要掌握的3种技能
    其它 华硕 ASAU S4100U 系统安装 win10安装 重装系统 Invalid Partition Table 解决
    数据分析 一些基本的知识
    Python 取样式的内容 合并多个文件的样式 自定义样式
    电商 Python 生成补单公司需要的评论格式3
    SpringBlade 本地图片上传 生成缩略图
    SQL Server 字符串截取
    SpringBlade 本地图片上传
  • 原文地址:https://www.cnblogs.com/laresh/p/6526754.html
Copyright © 2011-2022 走看看