Computer Science/자료구조

자료구조 | Linked Queue, Linked Stack | Linked Lists

토마토. 2021. 12. 29. 21:36

자료구조 | Singly Linked List | Linked List (tistory.com)

 

자료구조 | Singly Linked List | Linked List

singly Linked List가 동작하기 위해 필요한 클래스 링크드 리스트는 노드로 구성된다. 노드는 노드 자신의 data와 다른 노드와 연결되는 link로 구성된다. 단방향으로만 연결해주는 리스트 형태를 Singl

tomatolife.tistory.com


Linked Queue

Singly Linked List에 미리 구현해둔 함수 중 몇 개를 가져오면 된다. 

  • isEmtpy
  • add_rear
  • pop_front
import random
class Node:
    def __init__(self, item):
        self.data = item
        self.link = None

class SLL:
    def __init__(self):
        self.head = None
        self.rear = None
        self.count = 0
    def isEmpty(self):
        return self.head == None
    def addRear(self, node):
        tmp = self.rear
        self.rear = node
        self.rear.link = tmp
        if self.count == 0:
            self.head = self.rear
        self.count += 1
    def popFront(self):
        tmp = self.head.data
        self.head = self.head.link
        self.count -= 1
        return tmp
    def print(self):
        tmp = self.head
        while True:
            if tmp == None:
                break
            else:
                print(tmp.data)
                tmp = tmp.link
s = SLL()
for i in range(10):
    tmp = Node(i*100)
    s.addRear(tmp)
    
s.reverse()
s.print()

 


Linked Stack

Singly Linked List에 미리 구현해둔 함수 중 몇 개를 가져오면 된다. 

  • isEmtpy
  • peek_front
  • add_front
  • pop_front

 

import random
class Node:
    def __init__(self, item):
        self.data = item
        self.link = None

class SLL:
    def __init__(self):
        self.head = None
        self.rear = None
        self.count = 0
    def isEmpty(self):
        return self.head == None
    def addFront(self, node):
        tmp = self.head
        self.head = node
        node.link = tmp
        if self.count == 0:
            self.rear = self.head
        self.count += 1
    def popFront(self):
        tmp = self.head.data
        self.head = self.head.link
        self.count -= 1
        return tmp
    def print(self):
        tmp = self.head
        while True:
            if tmp == None:
                break
            else:
                print(tmp.data)
                tmp = tmp.link
s = SLL()
for i in range(10):
    tmp = Node(i*100)
    s.addFront(tmp)
s.print()