作为软件工程研究期间的一项任务,我必须用python实现我自己的列表类型,我是用链表实现的。你知道吗
从我过去的经验来看每当我用
self = self.next
我必须先保存我的头节点,然后再把头分配回自己。你知道吗
在这个链表实现中,我完全忘记了它,但是一切似乎都很好。你知道吗
不管怎样,我需要帮助,而不是'如何'做一些事情,我只是想了解它是如何工作而不保留和分配头节点回来,希望它是好的,谢谢!你知道吗
class MYList:
def __init__(self,*args):
numargs = len(args)
self.value = None
self.next = None
if(numargs == 0):
pass
elif(numargs == 1):
self.value = args[0]
elif(numargs == 2):
self.value = args[0]
self.next = MYList(args[1])
else:
self.value = args[0]
self.next = MYList(*args[1:])
def get_value(self,k):
i=0
while(i<k):
self = self.next
i+=1
return self.value
def set_value(self,k,v):
i=0
while(i<k):
self = self.next
i+=1
self.value = v
def len(self):
i=0
while(self.next!=None):
self = self.next
i+=1
return i+1
def append(self, *args):
if(len(args) == 1):
v=args[0]
if(self.get_value(0) == None):
self.set_value(0, v)
else:
i = 0
while(self.next != None):
self = self.next
i += 1
self.next = MYList(v)
else:
v=args[0]
if(self.get_value(0) == None):
self.set_value(0, v)
else:
i = 0
while(self.next != None):
self = self.next
i += 1
self.next = MYList(v)
self.append(*args[1:])
def print(self):
if(self.value == None):
print("List is empty!")
else:
amount = self.len()
for _ in range(amount):
if(_ < amount-1):
print(self.value,end=',')
else:
print(self.value)
self=self.next
def pop(self,*args):
if(len(args) == 0):
count = self.len()
head=self
for _ in range(count-1):
self = self.next
v = self.value
self = head
for _ in range(count-2):
self = self.next
self.next = None
return v
elif(len(args)>1):
raise Exception("Enter a key to pop only!")
else:
k = args[0]
count = self.len() - 1
if(k>count):
raise Exception("Key too high!")
elif(k==0):
v=self.value
self.value = self.next.value
self.next = self.next.next
return v
else:
head=self
for _ in range(-1,k-1):
self = self.next
v = self.value
temp_next = self.next
self = head
for _ in range(-1,k-2):
self = self.next
self.next = temp_next
return v
目前没有回答
相关问题 更多 >
编程相关推荐