Exemplo n.º 1
0
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
Exemplo n.º 2
0
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()