class Dnode:
def __init__(self, data, prev=None, next=None):
self.data = data
self.prev = prev
self.next = next
이중연결리스트로 구현한 댁의 노드는 전단과 후단의 연결이 필요하기 때문에 링크 필드가 두개의 변수로 이루어져
있다 self.prev는 자기 자신의 후단의 노드와 연결하는 링크고
self.next 는 자기 자신의 전단의 노드와 연결하는 링크이다.
from Dnode import Dnode
class doublelinkedDec:
def __init__(self):
self.rear = None
self.front = None
def isEmpty(self):
return self.front == None
def clear(self):
self.front = self.front = None
def size(self):
if self.isEmpty():
return 0
else:
count = 1
dnode = self.front
while dnode == self.rear:
count += 1
denode = denode.next
return count
def display(self):
if self.isEmpty():
print("None")
else:
denode = self.front
while denode != self.rear:
print(denode.data, end="->")
denode = denode.next
print(self.rear.data)
def addFront(self, data):
node = Dnode(data, None, self.Front)
if self.isEmpty():
self.front = self.rear = node
else:
self.front.prev = node
self.front = node
def addRear(self, data):
node = Dnode(data, self.rear, None)
if self.isEmpty():
self.rear = self.front = node
else:
self.rear.next = node
self.rear = node
def deleteFront(self):
redata = self.front.data
self.front = self.front.next
if self.front == None:
self.front = self.rear = None
else:
self.front.prev = None
return redata
def deleteRear(self):
if not self.isEmpty():
data = self.rear.data
self.rear = self.rear.prev
if self.rear == None:
self.rear = self.front = None
else:
self.rear.next = None
return data
doublelinkdec = doublelinkedDec()
for i in range(10):
doublelinkdec.addRear(i)
doublelinkdec.display()
for i in range(3):
doublelinkdec.deleteRear()
doublelinkdec.display()
삽입
def addFront(self, data):
node = Dnode(data, None, self.front)
if self.isEmpty():
self.front = self.rear = node
else:
self.front.prev = node
self.front = node
def addRear(self, data):
node = Dnode(data, self.rear, None)
if self.isEmpty():
self.rear = self.front = node
else:
self.rear.next = node
self.rear = node
삭제