class LinkedListStack: # 비어있는 양방향 리스트로 초기화 def __init__(self): self.data = DoublyLinkedList() # 스택의 크기 반환 def size(self): return self.data.getLength() # 스택이 비어있는지 확인 def isEmpty(self): return self.size() == 0 # 스택에 데이터 추가 def push(self, item): # 노드를 새로 만듬 node = Node(item) # 마지막 자리에 데이터를 넣게 된다 self.data.insertAt(self.size() + 1, node) # 스택에 데이터 삭제 후 반환 def pop(self): return self.data.popAt(self.size()) # 스택의 맨 꼭대기의 데이터 반환 def peek(self): return self.data.getAt(self.size()).data
class LinkedListQueue: def __init__(self): self.data = DoublyLinkedList() def size(self): return self.data.nodeCount def isEmpty(self): return self.data.nodeCount == 0 def enqueue(self, item): node = Node(item) self.data.insertAt(self.size() + 1, node) def dequeue(self): return self.data.popAt(1) def peek(self): return self.data.head.next.data
def main(): # Start with empty list llist = DoublyLinkedList() # Insert 6. So the list becomes 6->None llist.append(6) # Insert 7 at the beginning. # So linked list becomes 7->6->None llist.push(7) # Insert 1 at the beginning. # So linked list becomes 1->7->6->None llist.push(1) # Insert 4 at the end. # So linked list becomes 1->7->6->4->None llist.append(4) # Insert 8, after 7. # So linked list becomes 1->7->8->6->4->None llist.insert(llist.head.next, 8) print('###################') llist.printList() # So linked list becomes 1->7->8->2->6->4->None llist.insertAt(2, 2) llist.printList() print('###################') llist.delete(llist.head) llist.delete(llist.head.next) llist.delete(llist.head.next) llist.printList() print('###################') llist.deleteAt(2) llist.printList()