单向链表的实现

class Node(object): #定义节点类
def __init__(self, item): #初始化节点对象
self.item = item
self.next = None


class singlelingle(object): #定义链表类

cur = None

def __init__(self,node = None): #初始化链表对象
self.__head = node


def is__empty(self):#判断是否为空
if self.__head == None:
return self.__head == None


def add_head(self,item): #在链表的头部插入元素
node = Node(item)
if self.__head is None:
self.__head = node
else:
node.next = self.__head
self.__head = node


def add_rear(self,item): #在链表的尾部插入元素
node = Node(item)
if self.__head is None:
self.__head = node
else:
cur = self.__head
while cur.next != None:
cur = cur.next
cur.next = node


def insert(self,pos,item): #在链表的pos位置后插入节点node
node = Node(item)
count = 1
if self.__head is None:
self.__head = node
else:
cur = self.__head
while count < pos :
cur = cur.next
count += 1
node.next = cur.next
cur.next = node


def cheak(self,item): #查找链表中是否存在某个元素
if self.__head is None:
print("链表中不存在此元素%s"%item)
return False
else:
cur = self.__head
while cur.next != None:
cur = cur.next
if cur.item == item:
print("链表中存在元素%s"%item)
return True
else:
print("链表中不存在此元素%s" % item)
break
return False


def delete(self,item):#删除元素
if self.__head is None:
return
elif self.__head.item == item:
self.__head = self.__head.next
else:
cur = self.__head
pre = None
while cur.item != item :
pre = cur
cur = cur.next
cur = cur.next
pre.next = cur


def gai(self,item,new_item):#修改链表中某个节点元素的item值为新的数值
if self.__head is None:
return
else:
cur = self.__head
while cur.next != None:
cur = cur.next
if cur.item == item:
cur.item = new_item
return
else:
print("链表中不存在此元素%s,无法进行修改" % item)
#break


def length(self): #返回链表的长度
if self.__head is None:
return "链表为空"
else:
cur= self.__head
count = 1
while cur.next != None:
cur = cur.next
count += 1
return "链表的长度为%d"%count


def travel(self): #遍历链表 这就是打印啊!!!!!
if self.__head is None:
return
else:
cur = self.__head
while cur!= None:
print(cur.item,end=' ')
cur = cur.next

# print(cur.item)

if __name__ == "__main__":
ll = singlelingle()
ll.add_head(11)
ll.add_head(22)
ll.add_rear(33)
ll.insert(2,44)
ll.travel()
print(ll.length())
ll.cheak(55)
ll.delete(11)
ll.travel()
ll.add_rear(55)
ll.travel()
ll.gai(11,77)
ll.travel()

猜你喜欢

转载自www.cnblogs.com/guducp/p/9187870.html
今日推荐