Computer Science/Data Structure
[Data Structure/μλ£κ΅¬μ‘°][CS] 2. Stack
devYeON_
2021. 12. 27. 19:29
2. Stack
π μ μ : νμͺ½ λμμλ§ λ°μ΄ν°λ₯Ό λ£κ³ λΊ μ μλ LIFO ννμ μλ£κ΅¬μ‘°
1. μ°μ°
- push : μ€νμ 맨 μλ¨μ λ°μ΄ν°λ₯Ό μ½μ
- pop : μ€νμ 맨 μλ¨ λ°μ΄ν°λ₯Ό μμ
- top : μ€νμ 맨 μλ¨ λ°μ΄ν°
- isEmpty : μ€νμ΄ λΉμ΄ μλ μ§λ₯Ό νμΈ return boolean
- isFull : μ€νμ΄ κ°λ μ°¨ μλ μ§λ₯Ό νμΈ return boolean
2. ꡬν λ°©μ
β Array
- μ₯μ : ꡬνμ΄ μ½κ³ , μνλ λ°μ΄ν°μ μ κ·Ό μλκ° λΉ λ₯΄λ€
Public class Stack{
int top;
int maxSize;
Object[] stackArr;
public Stack(int size){
this.top = -1;
this.maxSize = size;
this.stackArr = new Object[maxSize];
}
public boolean isEmpty(){
return (top == -1);
}
public void push(Object item){
if(top >= maxSize - 1){
System.out.pritnln("Exception");
// μ€νμ΄ κ°λ μ°Όμ λμ μμΈμ²λ¦¬
}
stackArr[++top] = item;
}
public Object peek(){
if(isEmpty()) throw new ArrayIndexOutOfBoundsException(e);
return stackArr[top];
}
public Object pop(){
Object item = peek();
top--;
return item;
}
}
β‘ Linked List
- μ₯μ : λ°μ΄ν°μ μ΅λ κ°μκ° νμ λμ΄ μμ§ μκ³ , λ°μ΄ν°μ μ½μ μμ κ° μ©μ΄νλ€
public class Node{
Object data;
Node nextNode;
public Node(Object data){
this.data = data;
this.nextNode = null;
}
public void linkNode(Node top){
this.nextNode = top;
}
public Object getData(){
return this.data;
}
public Node getNextNode(){
return this.nextNode;
}
}
public class LinkedList{
Node top;
public LinkedList(){
top = null;
}
public boolean isEmpty(){
return (top == null);
}
public void push(Object item){
Node newNode = new Node(item);
newNode.linkNode(top);
top = newNode;
}
public Object peek(){
return top.getData();
}
public Object pop(){
if(isEmpty()) throw new ArrayIndexOutOfBoundsException();
else{
Object item = peek();
top = top.getNextNode();
retun item;
}
}
}
3. μ€νμ μ₯λ¨μ
μ₯μ | λ¨μ | |
Array | - λλ€ μμΈμ€κ° λΉ λ¦ - λΉ λ₯΄κ² μ κ·Ό κ°λ₯ |
- λ©λͺ¨λ¦¬ μ¬μ© λΉν¨μ¨μ - λ°°μ΄ λ΄ λ°μ΄ν° μ΄λ μ¬κ΅¬μ± μ΄λ €μ |
Linked List | - λμ μΌλ‘ λ©λͺ¨λ¦¬ μ¬μ© - λ°μ΄ν° μ¬κ΅¬μ±μ΄ μ©μ΄ - λμ©λ λ°μ΄ν° μ²λ¦¬ κ°λ₯ |
- νΉμ indexμ λ°μ΄ν°λ₯Ό κ²μνκΈ° μ΄λ €μ - λ©λͺ¨λ¦¬λ₯Ό μΆκ°μ μΌλ‘ μ¬μ©ν΄μΌ ν¨ |
4. μκ° λ³΅μ‘λ
μ°μ° | Big-O |
insert | O(1) |
delete | O(1) |
search | O(n) |
5. μ¬μ© μμ
- κ°μ₯ μ΄μ μ μΌμ΄λ μ΄λ²€νΈ κ΄λ¦¬μ μ μ© ex) undo, redo
- μ¬κ· ν¨μλ₯Ό νμλ‘ νλ κ²½μ° μ€νμΌλ‘ ꡬν κ°λ₯
- νμ νκΈ° κ³μ°μμμ νμ© κ°λ₯