자료 구조 중 하나인 Stack의 사전적 정의는 '쌓다', '더미'이다.
상자에 물건을 쌓아 올리듯이 데이터를 쌓는 자료 구조라고 할 수 있다.
LIFO(Last In First Out), 가장 마지막에 넣은 데이터가 가장 먼저 출력된다.
스택 안에 값 넣기
스택.add(값);
스택 크기 확인
stack.size();
스택 출력 시 나올 값 확인
스택.peek();
스택 값 변경하기
스택.set(인덱스, 값);
스택 값 제거하기
스택.remove(인덱스);
스택 인덱스의 값 확인
스택.elementAt(인덱스);
스택 특정 값이 어느 인덱스에 들었나 확인
스택.indexOf("값");
스택 값 뽑아내기(마지막에 넣은 순서대로 나옴)
스택.pop();
스택 비우기
스택.clear();
스택 비었는지 확인(true, false)
스택.empty();
Stack<Integer> stack = new Stack<>();
// 데이터 삽입
stack.push(1);
stack.push(2);
stack.push(3);
// 데이터 출력
stack.peek(); // 3 출력 (맨 위의 값 출력)
// 데이터 삭제
stack.pop(); // 3 제거
stack.pop(); // 2 제거
stack.pop(); // 1 제거
stack.clear(); // 모든 데이터 제거
Queue의 사전적 의미는 무엇을 기다리는 사람,
차량 등의 줄 혹은 줄을 서서 기다리는 것을 의미한다.
이처럼 줄을 지어 순서대로 처리되는 것이 Queue라는 자료구조이다.
FIFO(First In First Out), 가장 먼저 넣은 데이터가 가장 먼저 출력된다.
큐 안에 값 넣기
큐명.offer(값);
큐 다음 출력 값 확인하기
큐명.peek();
큐 안의 값 출력하기
큐명.poll();
큐 안의 특정 값 빼기
큐명.remove(값);
큐 크기 확인
큐명.size();
큐 비우기
큐명.clear();
큐 비어있는지 확인
큐명.isEmpty();
Queue<Integer> q = new LinkedList<>();
// 데이터 삽입
q.offer(1);
q.offer(2);
q.offer(3);
// 데이터 출력 삭제
q.peek(); // 1 출력 (맨 위의 값 출력)
q.poll(); // 1 출력 후 삭제
// 데이터 삭제
q.remove(); // 2 삭제
q.clear(); // 모든 데이터 삭제
진짜 알것같으면서도 모르겠는 이 느낌
바다위를 떠다니는 부표같은 느낌이다...
그나마 내가 머릿속에 지금 당장에 기억에 남는건
LIFO,FIFO
왜? 내가 전공한 과에서 아주 자주듣고 기본적인 내용이었기 때문...^^...
역시 전공했던 내용들은 기억에 많이 있지만, 비전공자인 나는 오늘도 눈물을...