定义
双链表就是同时包含两个指针域的结点构成的链表。
python实现
创建双链表
class DoubleLinkedNode:
def __init__(self,data):
self.data = data
self.next = None
self.prev = None
class DoubleLinkedList:
def __init__(self):
self.head = DoubleLinkedNode(None)
def CreateDoubleLinkedList(self):
data = input("请输入元素(回车键确定,#结束):")
cNode = self.head
while data != "#":
element = DoubleLinkedNode(int(data))
cNode.next = element
element.prev = cNode
cNode = cNode.next
data = input("请输入元素(回车键确定,#结束):")
DLList = DoubleLinkedList()
DLList.CreateDoubleLinkedList()
结果如下:
尾端插入元素
class DoubleLinkedNode:
def __init__(self,data):
self.data = data
self.next = None
self.prev = None
class DoubleLinkedList:
def __init__(self):
self.head = DoubleLinkedNode(None)
def CreateDoubleLinkedList(self):
data = input("请输入元素(回车键确定,#结束):")
cNode = self.head
while data != "#":
element = DoubleLinkedNode(int(data))
cNode.next = element
element.prev = cNode
cNode = cNode.next
data = input("请输入元素(回车键确定,#结束):")
def InsertElementInTail(self):
cNode = self.head
data = input("请输入要插入的值:")
nNode = DoubleLinkedNode(int(data))
while cNode.next!= None:
cNode = cNode.next
cNode.next = nNode
nNode.prev = cNode
def GetLength(self):
cNode = self.head
length = 0
while cNode.next != None:
length = length+1
cNode = cNode.next
print(length)
DLList = DoubleLinkedList()
DLList.CreateDoubleLinkedList()
DLList.InsertElementInTail()
DLList.GetLength()
结果如下:
首端插入元素
class DoubleLinkedNode:
def __init__(self,data):
self.data = data
self.next = None
self.prev = None
class DoubleLinkedList:
def __init__(self):
self.head = DoubleLinkedNode(None)
def CreateDoubleLinkedList(self):
data = input("请输入元素(回车键确定,#结束):")
cNode = self.head
while data != "#":
element = DoubleLinkedNode(int(data))
cNode.next = element
element.prev = cNode
cNode = cNode.next
data = input("请输入元素(回车键确定,#结束):")
def InsertElementInHead(self):
cNode = self.head.next
pNode = self.head
data = input("请输入要插入的值:")
nNode = DoubleLinkedNode(int(data))
pNode.next = nNode
nNode.prev = pNode
nNode.next = cNode
cNode.prev = nNode
def GetLength(self)<