스택

2600 단어 javaprogramming

스택이란 무엇입니까?



스택은 LIFO(후입선출) 메커니즘에 따라 제공되는 데이터 구조입니다. 이것을 이해하기 위해 누군가가 나중에 검색하기 위해 일부 개체를 일부 컨테이너에 순차적으로 넣는 시나리오를 상상해 보십시오. 그러나 그들은 마지막 개체를 먼저 가져간 다음 마지막 개체에서 두 번째 개체를 가져오는 식으로 발생합니다.

비슷한 것을 상상할 수 있습니까?



마지막 라운드가 먼저 발사되기 때문에 권총 탄창(비디오 게임에서)이 올바른 시나리오입니다. 스택에 따라 작동하는 것을 볼 수 있습니다.

프로그래밍 장면에서 스택은 다음을 포함하여 많은 용도로 사용됩니다.
나. 메모리 관리.
ii. 배열 반전/배열 재정렬.
iii. 표현식의 유효성을 확인합니다.
iv. 롤백 옵션을 함수로 구현합니다.

또한 운영 체제의 웹 브라우저와 창에서도 스택을 사용하여 메모리를 관리합니다.

스택은 사용자 자신이 사용자 정의 시나리오에 논리를 적용할 수 있음을 의미하는 추상 데이터 유형입니다.
이는 추상 메서드 정의를 구체적인 함수로 구현하는 것과 유사합니다. 따라서 추상 데이터 유형이 논리라고 상상하고 시나리오에 대한 코드에서 해당 논리를 직접 구현합니다.

스택 설계에는 다음과 같은 방법을 구현해야 합니다.
나. 푸시
ii. 팝
iii. 몰래 엿보다
iv. 비었다

우리는 이러한 방법을 구현하기 위해 배열을 사용합니다. 배열을 컨테이너로, 그 값을 객체로 지칭하겠습니다.

push


호출되면 매개변수 내부의 객체가 컨테이너에 추가됩니다. 푸시는 개체를 삽입하는 것과 같습니다.

pop


호출되면 컨테이너에 마지막으로 입력한 항목이 제거되어 사용자에게 전송됩니다. Pop은 객체를 제거하는 것과 같습니다.

seek


호출되면 마지막 항목이 사용자에게 반환됩니다. 컨테이너에서 제거되지 않습니다. Seek는 사용자가 확인할 필요가 있을 때 컨테이너의 마지막 항목을 표시하기 위한 것입니다.

isEmpty


호출되면 사용자는 컨테이너가 비어 있는지 여부를 알 수 있습니다.

컨테이너의 크기는 사용자가 정의할 수 있거나 배열을 사용하여 구현할 때 미리 정의된 상수 값일 수 있습니다.

사용자 정의 컨테이너 크기가 5인 숫자를 저장하기 위해 컨테이너의 개체 유형이 int인 MyStack 클래스를 구현했다고 가정해 보겠습니다.

그래서 이렇게 보일 것입니다.

MyStack stack = new MyStack(5);


임의의 5개 숫자와 다른 숫자를 추가합니다.

stack.push(11);
stack.push(87);
stack.push(43);
stack.push(117);
stack.push(-96);

stack.push(68);


처음 5개 값을 삽입할 수 있어야 하며 그 후에는 컨테이너에 더 이상 개체를 추가할 수 없다는 메시지가 표시됩니다. 따라서 값 68은 푸시되지 않습니다.

이제 아이템을 터트려봅시다.

int popped = stack.pop();


위와 같이 정의된 변수를 인쇄하면 마지막으로 삽입된 숫자인 -96이 반환됩니다.

이제 다음 남은 항목도 제거하고 한 번 더 터트려 보십시오.
따라서 pop을 4번 호출하고 한 번 더 호출하면 더 이상 팝할 수 없다는 메시지가 표시됩니다. 현재 스택은 비어 있고 isEmpty는 true를 반환합니다.

매번 반환된 값을 인쇄하면 삽입된 순서와 반대임을 알 수 있습니다. 이는 스택이 올바르게 작동하고 후입선출 규칙이 적용됨을 의미합니다.

다음 링크를 사용하여 스택 구현에 대해 자세히 알아보십시오.

https://www.geeksforgeeks.org/stack-data-structure-introduction-program/

좋은 웹페이지 즐겨찾기