Stack과 Queue 그리고 Array와 Linked List 자료구조

2023. 4. 25. 22:54·스파르타 기술면접

Stack

💡 후입선출(LIFO, Last-In-First-Out) 방식으로 데이터를 저장하는 자료구조
  • 가장 마지막에 추가된 항목이 가장 먼저 제거됩니다. Stack은 push() 메서드를 사용하여 항목을 추가하고, pop() 메서드를 사용하여 가장 최근에 추가된 항목을 제거합니다. 예를 들어, 함수 호출 스택은 Stack을 이용하여 구현됩니다.
  • 웹브라우저 방문한 주소를 스택에 저장해 두고 앞으로가기/ 뒤로가기 버튼, 괄호 짝 맞추기
import java.util.Stack;

public class StackExample {
    public static void main(String[] args) {
        Stack<String> stack = new Stack<>();

        // 스택에 데이터 추가
        stack.push("A");
        stack.push("B");
        stack.push("C");

        // 스택에서 데이터 꺼내기
        System.out.println(stack.pop()); // C
        System.out.println(stack.pop()); // B
        System.out.println(stack.pop()); // A
    }
}

 

Queue

 💡 선입선출(FIFO, First-In-First-Out) 방식으로 데이터를 저장하는 자료구조입니다.
  • 가장 먼저 추가된 항목이 가장 먼저 제거됩니다. Queue는 enqueue() 메서드를 사용하여 항목을 추가하고, dequeue() 메서드를 사용하여 가장 오래된 항목을 제거합니다. 예를 들어, 메시지 큐는 Queue를 이용하여 구현됩니다.
  • 캐시에서 데이터를 삭제할 때 오래된 데이터를 먼저 삭제, 대기열에서 대기 순으로 처리되는 점
  • 사용하는 방법?? 선착순을 만드는 방법…

 

Array

💡 데이터를 인덱스를 통해 접근하는 방식의 자료구조입니다.
  • 배열은 연속된 메모리 공간에 데이터를 저장, 인덱스를 사용하여 데이터에 빠르게 접근할 수 있다.
  • 동적 변경이 어렵다(크기가 고정되어있다.)
  • 배열의 크기는 초기화할 때 지정되며, 이후에 변경할 수 없다. 배열은 인덱스를 사용하여 임의의 위치에 있는 데이터에 빠르게 접근할 수 있기 때문에, 검색이나 정렬 등에 적합합니다.
  • 삽입, 삭제와 같은 동적인 연산에는 불리 → 링크드리스트

 

Linked List

💡 데이터와 다음 노드의 주소를 함께 저장하는 방식의 자료구조입니다.
  • 각 노드는 데이터와 다음 노드의 주소를 가리키는 포인터로 구성되며, 이전 노드의 주소를 가리키는 포인터도 가질 수 있습니다.
  • 인덱스를 통해 접근이 어렵기 때문에 처음부터 순서대로 찾아가야 함.
  • Linked List는 데이터의 추가, 삭제가 빠르며, 크기를 동적으로 조절할 수 있습니다.
  • 하지만 인덱스를 사용하여 데이터에 접근하는 것이 불가능하므로, 검색이나 정렬에는 적합하지 않습니다.

 


-arraylist와 linkedList의 차이?

-스택, 큐가 사용되는 곳? 사용법?(디큐같은...)

'스파르타 기술면접' 카테고리의 다른 글

절차지향 / 객체지향 / 함수형 프로그래밍이란 무엇이고 차이점은 무엇인가?  (0) 2023.04.29
프로세스와 스레드  (0) 2023.04.17
List / Set / MAp, HashMap  (0) 2023.04.16
Filter / Interceptor / AOP  (0) 2023.04.11
DI의 방식 중 필드 vs 생성자 주입 방식  (0) 2023.04.11
'스파르타 기술면접' 카테고리의 다른 글
  • 절차지향 / 객체지향 / 함수형 프로그래밍이란 무엇이고 차이점은 무엇인가?
  • 프로세스와 스레드
  • List / Set / MAp, HashMap
  • Filter / Interceptor / AOP
yeah구리
yeah구리
백엔드를 공부하는 초심자입니다.
  • yeah구리
    개발일지_헤맨만큼 내땅이다
    yeah구리
  • 전체
    오늘
    어제
    • 분류 전체보기 (114)
      • 스파르타 부트캠프(spring) (75)
      • 스파르타 기술면접 (10)
      • 코딩연습 (0)
      • 항해 (10)
      • 개발일지 (4)
        • 개인 회고 (1)
        • 개발로그 (실무) (2)
      • 공부노트 (0)
      • 코딩테스트 (0)
        • 프로그래머스 (0)
        • 백준 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    X(Twitter) API #캐싱 #트러블슈팅 #개발
    비전공개발자 #개발로그 #커리어
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
yeah구리
Stack과 Queue 그리고 Array와 Linked List 자료구조
상단으로

티스토리툴바