프로그래밍 공부/JAVA

Java - Stack, Queue

뚜뚜:) 2020. 11. 12. 19:22


 데이터를 담아서 처리할 때 사용하는 자료구조


  Stack : 제일 먼저 들어간 자료가 나중에 나오는것, 후입선출(LIFO)의 자료구조 
ex.상자, 되돌리기, 콜스택 ==> 리턴하면 제자리로 돌아옴, 뒤로가기/앞으로가기
  

  Queue : 제일 먼저 들어간 자료가 먼저 나오는것, 선입선출(FIFO)의 자료구조 ex.은행

    ==> LinkedList로 구현해서 사용할 수 있다.


   Stack 명령 
1) 자료입력 : push(입력 데이터);
2) 자료 출력
      2-1) pop( ); ==> 자료를 꺼내 온 후 꺼내온 데이터를 Stack에서 지운다.
    2-2) peek( ); ==> 삭제없이 자료를 꺼내온다.

   

	
    LinkedList<String> stack = new LinkedList<>();

        stack.push("1.홍길동");
        stack.push("2.일지매");
        stack.push("3.이순신");
        stack.push("4.성춘향");

        System.out.println("stack값 : " + stack);
        System.out.println();

    
		//pop을 사용하여 꺼내오기 
		String data = stack.pop();
		System.out.println("pop을 사용하여 꺼내온 값 : " + data);
		
		//2번째 값을 꺼내옴 
		System.out.println("pop을 사용하여 두번째 꺼내온 값 : " + stack.pop());
		
		//꺼내온 값이 사라짐
		System.out.println("pop 사용 후 stack 값 : " + stack);
		System.out.println();
		
		//stack에 데이터를 추가 -> 3개 데이터 들어있음 
		stack.push("5.성춘향");
		System.out.println("데이터 추가 후 stack 값 : " + stack);
		
		//최근에 추가한 "성춘향"의 데이터가 나옴 
		System.out.println("꺼내온 값 : " + stack.pop());
		System.out.println();
		
		//peek를 사용하여 값을 꺼내오기 
		System.out.println("삭제없이(peek 사용)꺼내온 값 : " + stack.peek());
		System.out.println("stack 값 : " + stack);

 

Queue 명령 
1) 자료입력 : offer(입력 데이터); 
2) 자료 출력 
    2-1) poll( );   ==> 자료를 꺼내 온 후 꺼내온 데이터를 Queue에서 삭제한다. 
    2-2) peek( ); ==> 삭제없이 데이터를 꺼내온다. 

 


	LinkedList<String> queue = new LinkedList<>();
		queue.offer("1.홍길동");
		queue.offer("2.일지매");
		queue.offer("3.이순신");
		queue.offer("4.변학도");
		
		System.out.println("Queue 값 : " + queue);
		
		//poll을 사용 
		String temp = queue.poll();
		System.out.println("poll을 사용하여 꺼내온 값  : " + temp);
		System.out.println("두번째 꺼내온 값 : " + queue.poll());
		System.out.println("queue 값 : " + queue);
		System.out.println();
		
		queue.offer("5.성춘향");
		System.out.println("데이터를 추가 후  queue 값 : " + queue);
		System.out.println();
		
		System.out.println("꺼내온 값 : " + queue.poll());
		System.out.println("queue 값 : " + queue);
		System.out.println();
		
		//peek 사용
		System.out.println("peek를 사용하여 삭제없이 꺼내온 값 : " + queue.peek());
		System.out.println("queue 값 : " + queue);