[자료구조] 스택과 큐

2022. 2. 17. 09:00· CS/[DATA STRUCTURE]
목차
  1. 1. 정의
  2. 1. 스택
  3. 1.2 큐
  4. 2. 구현
  5. 2.1 스택
  6. 2.2 큐
  7. ※ 참조

[자료구조] 스택과 큐

 

1. 정의

1. 스택

  • Stack : 쌓는다는 의미 → 차곡차곡 쌓는 자료구조
  • LIFO : Last In First Out 구조
  • top에 있는 자료가 가장 최신의 자료
  • 한쪽에서 자료의 삽입과 삭제가 반복 됨

 

1.2 큐

  • Queue : 줄서서 기다린다는 의미 → 먼저 들어오는게 먼저 나가는 자료 구조
  • FIFO : First In First Out 구조
  • 큐의 양끝에서 자료 추가와 삭제가 이루어짐



2. 구현

2.1 스택

  • class Stack<T> {
    
      static class Node<T> {
        private T data;
        private Node<T> next;
    
        public Node(T data) {
          this.data = data;
        }
      }
    
      private Node<T> top;
    
      //데이터 제거
      public T pop() {
        if (top == null) {
          throw new EmptyStackException();
        }
        T item = top.data;
        top = top.next;
        return item;
      }
    
      //데이터 입력
      public void push(T item) {
        Node<T> newNode = new Node<>(item);
        newNode.next = top;
        top = newNode;
      } 
    
      //맨 위의 데이터를 반환
      public T peek() {
        if (top == null) {
          throw new EmptyStackException();
        }
            return top;
      }
    
      //스택이 비었는지 확인
      public boolean isEmpty() {
        return top == null; 
      }
    }

 

2.2 큐

  •     class Queue<T> {
    
        class Node<T> {
          private T data;
          private Node<T> next;
    
          public Node(T data) {
            this.data = data;
          }
        }
    
        private Node<T> first;
        private Node<T> last;
    
        //데이터 추가
        public void add(T item) {
          Node<T> newNode = new Node<>(item);
    
          //마지막이 존재 == 저장된 데이터가 있음
          if (last != null) {
            last.next = newNode;
          }
    
          last = newNode;
    
          //첫번째가 없음 == 저장된 데이터가 없음
          if (first == null) {
            first == last;
          }
        }
    
        //데이터 제거
        public T remove() {
    
          //데이터가 없으면
          if (first == null) {
            throw new NoSuchElementException();
          }
    
          T data = first.data;
          first = first.next;
    
          if (first == null) {
            last = null;  //변경한 first가 null이면 데이터가 비어있으므로 
          }
    
          return data;
        }
    
        public T peek() {
    
          //큐가 비어있으면
          if (first == null) {
            throw new NoSuchElementException();
          }
    
          return first.data;
        }
    
        public boolean isEmpty() {
          return first == null;
        }
      }




※ 참조

  • 자바로 구현하고 배우는 자료구조 - 네이버 부스트 코스
  • Stack & Queue - 엔지니어대한민국

 

저작자표시 (새창열림)

'CS > [DATA STRUCTURE]' 카테고리의 다른 글

[자료구조] AVL트리  (0) 2022.03.08
[자료구조] 힙  (0) 2022.03.03
[자료구조] 트리  (0) 2022.03.02
[자료구조] 해시  (0) 2022.02.24
[자료구조] 연결 리스트(Linked List)  (0) 2022.02.22
  1. 1. 정의
  2. 1. 스택
  3. 1.2 큐
  4. 2. 구현
  5. 2.1 스택
  6. 2.2 큐
  7. ※ 참조
'CS/[DATA STRUCTURE]' 카테고리의 다른 글
  • [자료구조] 힙
  • [자료구조] 트리
  • [자료구조] 해시
  • [자료구조] 연결 리스트(Linked List)
쿠엔크
쿠엔크
우아한테크코스 5기 BE 에단 Github : https://github.com/cookienc
쿠엔크
기러기는 기록기록
쿠엔크
전체
오늘
어제
  • 분류 전체보기 (132)
    • CS (46)
      • [OS] (12)
      • [NETWORK] (10)
      • [DATABASE] (11)
      • [BASIC CONCEPT] (1)
      • [DATA STRUCTURE] (7)
      • [ALGORITHM] (5)
    • LANGUAGE (17)
      • [JAVA] (17)
    • DESIGN_PATTERN (2)
    • FRAMEWORK (18)
      • [SPRING] (18)
    • ORM (11)
      • JPA (11)
    • AWS (7)
    • BOOK (10)
      • [자바 웹 개발 워크북] (3)
      • [이펙티브 자바] (7)
    • 개발 (19)
      • [오류] (7)
      • [고민] (1)
      • [우테코] (10)
      • [iTracker] (1)
    • Tip (1)
      • [Plugins] (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • aws
  • 개념
  • JPA
  • java
  • 알고리즘
  • 자바 웹 개발 워크북
  • 자료구조
  • HTTP
  • 오류
  • CORS
  • JVM
  • 가비아
  • Spring
  • 스프링
  • 운영체제
  • 디자인 패턴
  • Effective Java
  • 데이터베이스
  • 네트워크
  • ArgumentResolver

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
쿠엔크
[자료구조] 스택과 큐

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.