永发信息网

为 LinkedList 添加类似 Python 自带列表实现 list 中的 append, pop, insert 方法

答案:1  悬赏:50  手机版
解决时间 2021-02-28 15:20
1.为 LinkedList 添加类似 Python 自带列表实现 list 中的 append, pop, insert 方法. 分别给出你实现的这三个方法的时间复杂度.
class Node:
def __init__(self,data):
self.data = data
self.next = None

def getData(self):
return self.data

def getNext(self):
return self.next

def setData(self,newdata):
self.data = newdata

def setNext(self,newnext):
self.next = newnext

class LinkedList:

def __init__(self):
self.head = None

def isEmpty(self):
return self.head == None

def add(self,item):
temp = Node(item)
temp.setNext(self.head)
self.head = temp

def size(self):
current = self.head
count = 0
while current != None:
count += 1
current = current.getNext()

return count

def search(self,item):
current = self.head
found = False
while current != None and not found:
if current.getData() == item:
found = True
else:
current = current.getNext()

return found

def remove(self,item):
current = self.head
previous = None
found = False
while current != None and not found:
if current.getData() == item:
found = True
else:
previous = current
current = current.getNext()
if found:
if previous == None:
self.head = current.getNext()
else:
previous.setNext(current.getNext())
2.在之前的一题中, 你很可能实现的是一个复杂度为 $O(n)$ 的 append 方法. 如何修改程序, 使得可以使其复杂度为 $O(1)$? (提示: 为 LinkedList 添加一个指向链表尾部的属性.)
最佳答案
写了个insert 
def insert(self,index,item):
        previous=None
        current=self.head
        count=0
        temp=Node(item)
        if index>self.size():
            print "out index"
        elif index==0:
            temp.setNext(current)
            self.head=temp
        else:
            while index:
                index-=1
                previous=current
                current=current.getNext()
            previous.setNext(temp)
            temp.setNext(current)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
水仙花的形态特征介绍 水仙花什么样
对于公式G=mg,正确的理解是 A.质量是1千克的
餐厅给客人开发票,他要交税吗
永登八运驾校马家坪分校地址在什么地方,想过
港版插头转换器公牛牌GN一L01CE可以用在2000W
兴业银行万事达信用卡国内怎一用
加旺食品厂在哪里啊,我有事要去这个地方
罗汉鱼养着很好突然怎么不起头了?
闻溪乡怎么去啊,有知道地址的么
雷柏v20s怎么下载驱动
三国群英传手游平民玩家怎么赚钱
西安方圆机械有限公司这个地址在什么地方,我
机油前SJ什么意思
伊宁机场有没有飞库尔勒的航班?
学dreamweaver要不要学html
推荐资讯
surplus什么意思
七八年属马与六三年属兔姻缘
天河生态优质农产品超市在什么地方啊,我要过
眼角膜炎病历怎么写?
美的冰箱提示音冷藏变温还报警怎么回事
运动减肥成功的人请进
想给男朋友取个特殊的名字
东风风行景逸x3左面后尾灯罩多少钱一个
广告牌背景色是橘黄色用什么颜色的字比较好?
奥运会金牌奖金多少
一般关联交易是指商业银行与一个关联方之间单
电影情圣中,艾木和马总表白的那段话,有谁知
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?