1. Stack
: ๋จ์ด์ ์๋ฏธ์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ์์ ์ฌ๋ฆฐ๋ค๋ ์๋ฏธ
: ๋ฐฐ์ด ๋์ ์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ์์
: LIFO(Last In First Out) > ๋ง์น ์ ์๋ฅผ ์์๋์๋ค๊ฐ ๋งจ ์๋ถํฐ ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ,
๊ฐ์ฅ ์ต๊ทผ์ ์ถ๊ฐํ ํญ๋ชฉ์ด ๊ฐ์ฅ ๋จผ์ ์ ๊ฑฐ๋ ํญ๋ชฉ์ด๋ผ๋ ๊ฒ.
: ๋ฏธ๋ก ์ฐพ๊ธฐ, ๊ดํธ ์ ํจ์ฑ ์ฒดํฌ, ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ ๋ฑ์ ํ์ฉ
: ์ง์ new์ฐ์ฐ์๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์ฌ์ฉ๊ฐ๋ฅ
2. Stack์ ์ฐ์ฐ
stack.pop() | ๊ฐ์ฅ ์ต๊ทผ ์์ ๋ฐํ ํ ์ ๊ฑฐ |
stack.peek() | ๊ฐ์ฅ ์ต๊ทผ ์์ ํธ์ถ (์ ๊ฑฐX) |
stack.push(e) | ์์ ์ฝ์ |
stack.isEmpty() | ์คํ์ด ๋น์ด์๋ ๊ฒฝ์ฐ true๋ฐํ, ์์๊ฐ ์๋ ๊ฒฝ์ฐ false๋ฐํ |
stack.search() | ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋ ์ธ๋ฑ์ค ๋ฐํ(๋ง์ง๋ง ์์๋ก๋ถํฐ 1~๋ฐํ) = pop๊ฐ์๋ฅผ ์ ์ ์์ |
3. Stack ํน์ง
: ๋ฐฐ์ด๊ณผ ๋ค๋ฅด๊ฒ ์์์๊ฐ์ i๋ฒ์งธ ์์์ ์ ๊ทผ ๋ถ๊ฐ
: ๊ทธ๋ฌ๋ ๋ฐ์ดํฐ ์ถ๊ฐ ํน์ ์ญ์ ๋ ์์์๊ฐ์ ๊ฐ๋ฅ > ๋ฐฐ์ด์ฒ๋ผ ์์๋ฅผ ์์ผ๋ก ๋ฐ์ด์ฃผ๋ ์์ ๋ถํ์
: ์คํ์ ๊ฐ์ ๋ฐฉํฅ์์ ์์ดํ ์ ์ถ๊ฐํ๊ณ ์ญ์ ํ๋ค๋ ์กฐ๊ฑดํ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก๋ ๊ตฌํ ๊ฐ๋ฅ
4. stack ์์ ์ฝ๋
public static class StackNode {
private int data; // ์๋ฃํ์ T
private StackNode next;
public StackNode(int d) {
this.data=d;
}
}
private StackNode top;
public int pop() {
if(top==null) throw new EmptyStackException();
int item=top.data;
top=top.next;
return item;
}
public void push(int item) {
StackNode t=new StackNode(item);
t.next=top;
top=t;
}
public int peek() {
if(top==null) throw new EmptyStackException();
return top.data;
}
public boolean isEmpty() {
return top==null;
}
5. Queue
: FIFO(First In First Out) - ๋งคํ์ ์์ ์ค์ ์์ ํ๋ฅผ ๊ตฌ๋งคํ๋ฏ, ํ์ ์ ์ฅ๋ ํญ๋ชฉ๋ค์ ํ์ ์ถ๊ฐ๋๋ ์์๋๋ก ์ ๊ฑฐ
: BFS, ์บ์๊ตฌํ, ์์ ์ฐ์ ์์, Heap๊ตฌํ ๋ฑ์ ํ์ฉ
: LinkedList ํํ๋ก ๊ตฌํ๊ฐ๋ฅ
6. Queue ์ฐ์ฐ
queue.remove() | ์ฒซ๋ฒ์งธ ์์ ๋ฐํ ํ ์ ๊ฑฐ |
queue.poll() | |
queue.peek() | ์ฒซ๋ฒ์งธ ์์ ๋ฐํ (์ ๊ฑฐX) |
queue.element() | |
queue.add(e) | ์์ ์ฝ์ > ํ์ ๊ฐ์ฅ ๋ง์ง๋ง์ ์ฃผ๊ฐ |
queue.offer(e) | |
queue.isEmpty() | ํ๊ฐ ๋น์ด์๋ค๋ฉด true๋ฐํ, ์์๊ฐ ์กด์ฌํ๋ค๋ฉด false๋ฐํ |
7. Queue ํน์ง
: ํ ์ญ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ๊ตฌํ ๊ฐ๋ฅ - ์ฐ๊ฒฐ๋ฆฌ์คํธ ๋ฐ๋๋ฐฉํฅ์์ ํญ๋ชฉ์ ์ถ๊ฐํ๊ณ ์ ๊ฑฐํ๋ค๋ ์กฐ๊ฑดํ์ ๊ตฌํ ๊ฐ๋ฅ
: ํ๋ ์ฒ์๊ณผ ๋ง์ง๋ง ๋ ธ๋ ๊ฐฑ์ ์ ์ ์ํด์ ๊ตฌํํดํจ
: ๋๋น์ฐ์ ํ์(BFS)๊ตฌํ์ ์ฒ๋ฆฌํด์ผํ ๋ ธ๋ ๋ฆฌ์คํธ๋ฅผ ์ ์ฅํ๋ ์ฉ๋๋ก ์ฌ์ฉ
=> ๋ ธ๋ํ๋๋ฅผ ์ฒ๋ฆฌํ ๋๋ง๋ค ํด๋น ๋ ธ๋์ ์ธ์ ํ ๋ ธ๋๋ฅผ ํ์ ๋ค์ ์ ์ฅ : ๋ ธ๋๋ฅผ ์ ๊ทผํ ์์๋๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅ
8. Queue ์์ ์ฝ๋
private static class QueueNode {
private int data;
private QueueNode next;
public QueueNode(int d) {
this.data=d;
}
}
private QueueNode first;
private QueueNode last;
public void add(int item) {
QueueNode t=new QueueNode(item);
if(last!=null) {
last.next=t;
}
last=t;
if(first==null) {
first=last;
}
}
public int remove() {
if(first==null) throw new NoSuchElementException();
int data=first.data;
first=first.next;
if(first==null) {
last=null;
}
return data;
}
public int peek() {
if(first==null) throw new NoSuchElementException();
return first.data;
}
public boolean isEmpty() {
return first==null;
}
๋๊ธ