单链表是什么?
起首在相识单链表之前,我们必需相识一下节点是什么。
节点是链表的构建块,它由两部份构成:
1、数据部份:用于包括数据
2、地点部份:用于指向下一个节点位置的指针。
在单链表中,每一个节点的地点部份包括有关下一个节点位置的信息;这构成一系列的链条或链环。链接列表的第一个节点由头部指针跟踪;末了一个节点指向None。
让我们看看下面的图表来更好地明白这一点:
注重: 在上图中,末了一个元素1指向None。 纵然这些节点相互一连绘制,实际上它们能够或能够不在一连的存储器位置中。
单链表怎样插进去和输出节点?
1、建立单链表
起首,您必需建立一个节点才建立单链表。为此,我们运用data和nextNode属性建立一个Node类。如前所述,data属性将包括数据,而nextNode将简朴地指向链表中的下一个节点。我们将默许值nextNode是无。您能够运用getter和setter要领来实行此操纵。
如今已建立了Node类,如今是时刻建立LinkedList类了。这只有一个属性,head。默许情况下,这将指向“ None”。假如头部指向“ None”,则示意 链接列表为空。为了跟踪链表中的节点数,我们能够向LinkedList类增添一个 size属性,并将其默许为0。
2、插进去节点
这是LinkedList类的要领。我们能够在链接列表中的任何位置插进去新节点,但为了使编码简朴有用,我们将一直将新节点增添到链表的开首;换句话说,头部将一直指向近来增添的节点。
假如我们将新节点增添到列表的末端,我们须要实行分外的事情来查找列表的末端然后增添它。这是一种糟蹋的操纵。然则,假如你保护另一个指针,让我们称它为尾指针,使其指向末了一个节点,这能够完成。
下面我们引见前一种要领,即怎样在链表的开首插进去节点。
假定我们须要在链表中增添7,我们须要实行以下步骤:
● 建立一个节点对象,个中7示意数据,下一个节点指向头节点
● 将头指针指向此新节点
末了,将size属性增添1,假如插进去胜利,返回True,这是一个好习惯;如许,用户就晓得发生了什么。
3、输出节点
这是LinkedList类的要领。要打印链表中所有节点中的数据,我们须要一次遍历一个节点并打印每一个节点的数据部份。
完成代码:
class Node: def __init__(self,data,nextNode=None): self.data = data self.nextNode = nextNode def getData(self): return self.data def setData(self,val): self.data = val def getNextNode(self): return self.nextNode def setNextNode(self,val): self.nextNode = val class LinkedList: def __init__(self,head = None): self.head = head self.size = 0 def getSize(self): return self.size def addNode(self,data): newNode = Node(data,self.head) self.head = newNode self.size+=1 return True def printNode(self): curr = self.head while curr: print(curr.data) curr = curr.getNextNode() myList = LinkedList() print("Inserting") print(myList.addNode(5)) print(myList.addNode(15)) print(myList.addNode(25)) print("Printing") myList.printNode() print("Size") print(myList.getSize())
单链表的长处和瑕玷是什么?
长处:
● 它是一种动态数据构造,在这类构造中,插进去和删除很简朴,由于我们不须要挪动元素。只需更新下一个指针就能够完成这项事情。
● 运用链表能够很容易地完成客栈和行列数据构造。
瑕玷
● 下一个指针占用了分外的内存。
● 没法随机接见。必需重新遍历链接列表才抵达特定节点。
以上就是本篇文章的全部内容,愿望能对人人的进修有所协助。更多精彩内容人人能够关注ki4网相干教程栏目!!!
以上就是python单链表中怎样插进去和输出节点?(代码示例)的细致内容,更多请关注ki4网别的相干文章!