Fork me on GitHub

随笔 - 997  文章 - 5  评论 - 181  阅读 - 300万 

  作为一个非常实用的一种数据结构,排序链表用在很多方面,下面是它的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   虚生  阅读(239)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示