ADT

성혜·2024년 1월 17일
0

Java

목록 보기
16/25
post-thumbnail

ADT, Abstract Data Tye(추상적 자료형)

  • 배열 + 사용법 용도에 맞게 구현
  • Stack
  • Queue

Stack

후입선출

LIFO ,Last Input First Output

저장소에 나중에 들어간 요소가 먼저 나온다.

ex) 메모리 구조(Stack(
ex) 되돌리기(Ctrl+Z), 다시하기(Ctrl+Y)
ex) 브라우저 > 뒤로가기, 앞으로 가기


		//Stack - 클래스
		Stack<String>stack = new Stack<String>();
		
		//1. 요소 추가하기
    	// - T push(T value) 타입변수
        stack.push("빨강");
		stack.push("노랑");
		stack.push("파랑");
		
		//2. 요소 개수
		//- int size()
		System.out.println(stack.size()); // 결과 : 3
		
		//3. 요소 읽기(꺼내고 바로 제거) = remove
		//- T pop()
		System.out.println(stack.pop());
		System.out.println(stack.size()); // 결과 : 2
		
		System.out.println(stack.pop());
		System.out.println(stack.size()); // 결과 : 1
		
		System.out.println(stack.pop());
		System.out.println(stack.size()); // 결과 : 0
		
		//System.out.println(stack.pop()); //에러! stack 비어있음
        
        //3. 빈배열
		System.out.println(stack.isEmpty());
		
		//4. 이번에 pop()을 하면 가져오게 될 요소 미리보기
		System.out.println(stack.peek());
		System.out.println(stack.size()); //사이즈가 줄어들지 않음
        
        

❗ 주의 할 것 ❗

		//stack.size가 줄어든다는 것을 생각해야함!
		for (int i=0; i<stack.size();i++) {
			System.out.println(stack.pop());			
		}
		
		//결과 : 파랑 노랑
        
        // 맞는 표현
        while(stack.size() >0 ) {
		System.out.println(stack.pop());
		}

Queue

선입선출

FIFO ,First Input First Output

저장소에 먼저 들어간 요소가 먼저 나온다.

ex) 모든 줄 서기 = 먼저 줄 선 사람이 먼저 들어감 
ex) 주문 리스트
ex) 순서가 있는 모든 목록

		//1. 요소 추가하기
		//- boolean add(T value) => 어레이리스트와 같음
		queue.add("빨강"); //enqueue();
		queue.add("노랑");
		queue.add("파랑");
		
		//2. 요소 개수
		System.out.println(queue.size());
		
		//3. 요소 읽기 (읽고 사라짐)
		System.out.println(queue.poll()); //dequeue()
		System.out.println(queue.size());
		
		System.out.println(queue.poll()); 
		System.out.println(queue.size());
		
		System.out.println(queue.poll()); 
		System.out.println(queue.size());
		
		System.out.println(queue.poll()); //에러 안나고 null 돌려줌 !

profile
하루를 정리하고 기록합니다.

0개의 댓글