|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #先定义一个节点的类
- class Node():
- #初始化
- def __init__(self,elem):
- self.elem=elem
- self.next=None#节点对象一开始的数据区是有的但是next不知道该指向谁先设置为空
- node=Node(100)
- #定义单链表的类
- class Singlelinklist():
- def __init__(self,node=None):#链表当中必须得存在一个属性指向第一个节点将链表与节点关联起来,属于类属性,因为在使用链表的时候不是拿类来操作的
- self.__head=node#自己内部的函数去使用,对外不暴露,所以将其私有化
- def is_empty(self):
- return self.__head==None
- def length(self):
- #cur游标用来移动遍历节点;将cur置于头一个头结点
- cur=self.__head
- count=0
- if cur==None:
- #count用来记录数据
- count=0
- while cur!=None:
- count+=1
- cur=cur.next
- return count
- def travel(self):
- """遍历整个列表"""
- cur=self.__head
- while cur!=None:
- print(cur.elem,end=' ')
- cur=cur.next
- def add(self,item):
- """链表头部添加元素"""
- node=Node(item)
- node.next=self.__head
- self.__head=node
- def append(self,item):
- """链表尾部添加元素"""
- node=Node(item)
- if self.is_empty():
- self.__head=node
- else:
- cur=self.__head
- while cur.next!=None:
- cur=cur.next
- cur.next=node
- def insert(self,pos,item):
- """在指定的位置添加元素"""
- if pos<=0:
- self.add(item)
- elif pos>(self.length()-1):
- self.append(item)
- else:
- pre=self.__head
- count=0
- while count<pos-1:
- count+=1
- pre=pre.next
- #循环退出后pre指向pos-1位置
- node=Node(item)
- node.next=pre.next#退出循环
- pre.next=node
- def remove(self,item):#使用两个游标cur和pre,移动的时候先移动pre再移动cur
- """删除节点"""
- cur=self.__head
- pre=None
- while cur!=None:
- if cur.elem ==item:
- if cur==self.__head:
- self.__head=cur.next
- else:
- pre.next=cur.next
- break
- else:
- pre=cur
- cur=cur.next
- def search(self,item):
- """查找节点是否存在"""
- cur=self.__head
- while cur!=None:
- if cur.elem==item:
- return True
- else:
- cur=cur.next
- return False
- if __name__=='__main__':
- li=Singlelinklist()
- print(li.is_empty())
- print(li.length())
- li.append(1)
- print(li.is_empty())
- print(li.length())
- li.append(2)
- li.add(8)
- li.append(3)
- li.append(4)
- li.append(5)
- li.append(6)
- #8123456
- li.insert(-1,9)#98123456
- li.travel()
- li.insert(3,100)#98110023456
- li.travel()
- li.insert(10,200)#98110023456200
- li.travel()
- li.remove(100)
- li.travel()
- li.remove(9)
- li.travel()
- li.remove(200)
复制代码
上面这个代码我每次运行的时候他所有的遍历都显示在一行,我希望遍历一次(li.travel())就显示一行内容,不想它全部显示在一起,想问一下代码要如何修改?
哦明白了,加个print()就行了
代码:
- #先定义一个节点的类
- class Node():
- #初始化
- def __init__(self,elem):
- self.elem=elem
- self.next=None#节点对象一开始的数据区是有的但是next不知道该指向谁先设置为空
- node=Node(100)
- #定义单链表的类
- class Singlelinklist():
- def __init__(self,node=None):#链表当中必须得存在一个属性指向第一个节点将链表与节点关联起来,属于类属性,因为在使用链表的时候不是拿类来操作的
- self.__head=node#自己内部的函数去使用,对外不暴露,所以将其私有化
- def is_empty(self):
- return self.__head==None
- def length(self):
- #cur游标用来移动遍历节点;将cur置于头一个头结点
- cur=self.__head
- count=0
- if cur==None:
- #count用来记录数据
- count=0
- while cur!=None:
- count+=1
- cur=cur.next
- return count
- def travel(self):
- """遍历整个列表"""
- cur=self.__head
- while cur!=None:
- print(cur.elem,end=' ')
- cur=cur.next
- print()
- def add(self,item):
- """链表头部添加元素"""
- node=Node(item)
- node.next=self.__head
- self.__head=node
- def append(self,item):
- """链表尾部添加元素"""
- node=Node(item)
- if self.is_empty():
- self.__head=node
- else:
- cur=self.__head
- while cur.next!=None:
- cur=cur.next
- cur.next=node
- def insert(self,pos,item):
- """在指定的位置添加元素"""
- if pos<=0:
- self.add(item)
- elif pos>(self.length()-1):
- self.append(item)
- else:
- pre=self.__head
- count=0
- while count<pos-1:
- count+=1
- pre=pre.next
- #循环退出后pre指向pos-1位置
- node=Node(item)
- node.next=pre.next#退出循环
- pre.next=node
- def remove(self,item):#使用两个游标cur和pre,移动的时候先移动pre再移动cur
- """删除节点"""
- cur=self.__head
- pre=None
- while cur!=None:
- if cur.elem ==item:
- if cur==self.__head:
- self.__head=cur.next
- else:
- pre.next=cur.next
- break
- else:
- pre=cur
- cur=cur.next
- def search(self,item):
- """查找节点是否存在"""
- cur=self.__head
- while cur!=None:
- if cur.elem==item:
- return True
- else:
- cur=cur.next
- return False
- if __name__=='__main__':
- li=Singlelinklist()
- print(li.is_empty())
- print(li.length())
- li.append(1)
- print(li.is_empty())
- print(li.length())
- li.append(2)
- li.add(8)
- li.append(3)
- li.append(4)
- li.append(5)
- li.append(6)
- #8123456
- li.insert(-1,9)#98123456
- li.travel()
- li.insert(3,100)#98110023456
- li.travel()
- li.insert(10,200)#98110023456200
- li.travel()
- li.remove(100)
- li.travel()
- li.remove(9)
- li.travel()
- li.remove(200)
复制代码
|
|