Stack

강영우·2024년 2월 20일
0

선형 자료구조

목록 보기
2/7

스택 (Stack)

  • 후입선출(Last In First Out; LIFO) 자료구조
  • 데이터가 입력된 순서의 역순으로 처리되어야 할때 사용
    ex) 함수 콜 스택, 수식계산, 인터럽트 처리 등

스택 기본연산

stack

추가 (Push)

스택의 가장 마지막 위치에 데이터 추가

꺼내기 (Pop)

스택의 가장 마지막 위치에 있는 데이터 꺼내기

peek

스택의 가장 마지막위치에 있는 데이터 반환

clear

스택 비우기

Stack stack = new Stack();
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
System.out.println(stack); // [1, 2, 3, 4, 5]

System.out.println(stack.pop()); // 5
System.out.println(stack); // [1, 2, 3, 4]

System.out.println(stack.peek()); // 4

stack.clear();

List를 이용한 스택 구현

class MyStack1{
	ArrayList list;
    MyStack(){
    	this.list = new ArrayList();
    }
    public boolean isEmpty(){
    	if(this.list.size() ==0){
        	return true;
		} else {
        	return false;
		}
    }
    public void push(int data){
    	this.list.add(data);
	}
    public Integer pop(){
    	if(this.isEmpty()){
        	System.out.println("Stack is Empty");
            return null;
        }
        int data = (int)this.list.get(this.list.size() - 1);
        this.list.remove(this.list.size() - 1);
        return data;
	}
    public Integer peek(){
    	if(this.isEmpty()){
        	System.out.println("Stack is Empty");
            return null;
        }
        int data = (int)this.list.get(this.list.size() - 1);
        return data;
	}
    public void printStack(){
    	System.out.println(this.list);
	}
}

Array를 이용한 스택 구현

class MyStack2{
	int[] arr;
    int top = -1;
    Mystack2(int size){
    	arr = new int[size];
	}
    public boolean isEmpty(){
    	if(this.top == -1){
        	return true;
		} else {
        	return false;
        }
	}
    public boolean isFull(){
    	if(this.top == this.arr.length - 1){
        	return true;
		} else {
        	return false;
        }
	}
    public void push(int data){
    	if(this.isFull()){
        	System.out.println("Stack is full!");
            return;
		}
        this.top +=1;
        this.arr[this.top] = data;
	}
    public Integer pop(){
    	if(this.isEmpty()){
        	System.out.println("Stack is Empty");
            return null;
		}
        int data = this.arr[this.top];
        this.top -= 1;
        return data;
	}
    public Integer peek(){
    	if(this.isEmpty()){
        	System.out.println("Stack is Empty");
            return null;
		}
        return this.arr[this.top];
	}
    public printStack(){
    	for(int item: this.arr){
        	System.out.print(item+" ");
		}
	}
}
profile
배움의 연속을 매순간 저장하는

0개의 댓글