• 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()
  • 相关阅读:
    Git官方推荐用书
    二叉树-补习
    POJ 2251 Dungeon Master(三维BFS)
    Codeforces 675C Money Transfers (思维题)
    HDU 1195 Open the Lock(BFS)
    HDU 1010 Tempter of the Bone(DFS+剪枝)
    POJ 1426 Find The Multiple(DFS,BFS)
    POJ 3216 Prime Path (BFS)
    POJ 3278 Catch that cow(BFS)
    UVa 572 Oil Deposits(简单DFS)
  • 原文地址:https://www.cnblogs.com/laresh/p/6526754.html
Copyright © 2020-2023  润新知