class Node(object):
def __init__(self, data):
self.next = None
self.data = data
def setNext(self, newnext):
self.next = newnext
def getNext(self):
return self.next
def setData(self, newdata):
self.data = newdata
def getData(self):
return self.data
class Node(object):
def __init__(self, data):
self.next = None
self.data = data
def setNext(self, newnext):
self.next = newnext
def getNext(self):
return self.next
def setData(self, newdata):
self.data = newdata
def getData(self):
return self.data
class LinkedList(object):
def __init__(self):
self.size = 0
self.head = Node(0)
def append(self, data, num):
newnode = Node(data)
temp = self.head
if num == 0: # 头插法
newnode.setNext(temp.getNext())
temp.setNext(newnode)
self.size += 1
return True
if num == 1: # 尾插法
while temp.getNext() != None:
temp = temp.getNext()
temp.setNext(newnode)
self.size += 1
return True
def insert(self, i, data):
if i < 0 and i < -1 or i > self.length():
print("下标越界")
return False
temp = self.head
newnode = Node(data)
if i == -1:
while temp.getNext() != None:
temp = temp.getNext()
temp.setNext(newnode)
self.size += 1
return True
else:
for a in range(1, self.length() + 1):
if i == a and temp != None:
newnode.setNext(temp.getNext())
temp.setNext(newnode)
self.size += 1
return True
temp = temp.getNext()
def remove(self, data):
if self.length() > 0:
current = self.head.getNext()
previous = self.head
while current != None:
if current.getData() == data:
previous.setNext(current.getNext())
current = None
self.size -= 1
return True
previous = current
current = current.getNext()
return "不存在"
else:
return "空链表"
def get(self, i):
if i < 1 or i > self.length():
print("下标越界")
temp = self.head
for a in range(1, self.length() + 1):
if a == i and temp.getNext() != None:
data = temp.getNext().getData()
return data
temp = temp.getNext()
return False
def update(self, i, data):
if i < 1 or i > self.length():
print("下标越界")
temp = self.head
for a in range(1, self.length() + 1):
if a == i and temp != None:
temp.getNext().setData(data)
return True
temp = temp.getNext()
return False
def delete(self, i):
if i < 1 or i > self.length() + 1:
print("下标越界")
temp = self.head
for a in range(1, self.length() + 1):
if a == i and temp.getNext() != None:
deleteNode = temp.getNext().getData()
temp.setNext(temp.getNext().getNext())
# temp.setNext(None)
return deleteNode
temp = temp.getNext()
return -1
def contains(self, data):
temp = self.head.getNext()
while temp != None:
if temp.getData() == data:
return True
temp = temp.getNext()
return False
def search(self, data):
if self.length()>0:
temp = self.head.getNext()
for i in range(1, self.length()):
if temp.getData() == data and temp != None:
return i
temp = temp.getNext()
return "不存在"
else:
return "空链表"
def clear(self):
self.head.setNext(None)
self.size = 0
return True
def isEmpty(self):
if self.length() == 0:
return True
def length(self):
count = 0
temp = self.head
while temp.getNext() != None:
count += 1
temp = temp.getNext()
return count
def display(self):
if self.length() > 0:
temp = self.head.getNext()
while temp != None:
if temp.getNext() != None:
print(temp.getData(), end=',')
else:
print(temp.getData(), end='')
temp = temp.getNext()
print()
else:
print(None)
def main():
link = LinkedList()
link.append(12, 0)
link.append("python", 0)
link.append(3, 0)
link.display()
# link.clear()
print(link.search(3))
link.display()
if __name__ == "__main__":
main()