Fork me on GitHub

  作为一个非常实用的一种数据结构,排序链表用在很多方面,下面是它的python代码实现:

  

from Node import *

class OrderedList:
        def __init__(self):
                self.head = None
        def prints(self):
                tempNode = self.head
                while tempNode is not None:
                        print tempNode.data
                        tempNode = tempNode.next
        def search(self,item):
                current = self.head
                found = False
                stop = False
                while current != None and not found and not stop:
                        if current.get_data() == item:
                                found = True
                        else:
                                if current.get_data() > item:
                                        stop = True
                                else:
                                        current = current.get_next()
                return found

        def add(self,item):
                current = self.head
                previous = None
                stop = False

                while current != None and not stop:
                        if current.get_data() > item:
                                stop = True
                        else:
                                previous = current
                                current = current.get_next()

                temp = Node(item)

                if previous == None:
                        temp.set_next(self.head)
                        self.head = temp
                else:
                        temp.set_next(current)
                        previous.set_next(temp)
        def size(self):
                current = self.head
                count = 0
                while current != None:

                if previous == None:
                        temp.set_next(self.head)
                        self.head = temp
                else:
                        temp.set_next(current)
                        previous.set_next(temp)
        def size(self):
                current = self.head
                count = 0
                while current != None:
                        count = count + 1
                        current = current.get_next()
                return count

mylist = OrderedList()
print(mylist.add(3))
print(mylist.add(8))
print(mylist.add(53))
print(mylist.add(33))
print(mylist.search(33))
print(mylist.prints())

  Node的代码:

class Node:
        def __init__(self,init_data):
                self.data = init_data
                self.next = None

        def get_data(self):
                return self.data

        def get_next(self):
                return self.next

        def set_data(self,new_data):
                self.data = newdata

        def set_next(self,new_next):
                self.next = new_next

temp = Node(99)
print temp.get_data()

  运行结果:

99
None
None
None
None
True
3
8
33
53
None

 

posted on 2017-12-22 11:32  虚生  阅读(242)  评论(0)    收藏  举报