stack!순서 표 기반 구현

이번 주 에 창 고 를 배 웠 다.
선생님 은 처음부터 우리 에 게 명확 한 개념 을 주 셨 습 니 다. 우 리 는 쌓 이 고 창고 가 있 지만 창고 가 없습니다!!
O (∩ ∩) O 우선 stack 의 개념 을 명 확 히 합 시다.
스 택 (stack) 은 한 끝 에 만 삽입 하거나 삭제 하 는 선형 표 입 니 다."LIFO" 선형 표 가 되 는 것 은 "후진 선 출" 이라는 뜻 입 니 다. (last in first out)
용어:
top (스 택 상단 요소) - 접근 가능 한 요소
push (스 택 에 들 어가 기) --- 요소 삽입
pop (스 택) -- 요소 삭제
- (shaffer 데이터 구조 및 알고리즘 분석 교재 참조)
우 리 는 사실 stack 은 특수 화 된 선형 표 로 한 끝 에 만 삽입 하거나 삭제 할 수 있다 는 것 을 분석 할 수 있다.
순서 표 는 top 을 설정 하 는 방법 이 두 가지 가 있 습 니 다.
1、
1, 2, 3, 4, 5 top 1 에서 가능 한 가요?
네!
분석:
삽입: 복잡 도 O (n)
삭제: 복잡 도 O (1)
2、
1, 2, 3, 4, 5 top 5 에서 가능 한 가요?
네!
분석:
삽입: 복잡 도 O (1)
삭제: 복잡 도 O (1)
나 는 누가 더 좋 은 지 이미 분명 하 다 고 생각한다.
top 의 설정 도 두 가지 방법 이 있 습 니 다.
1. 첫 번 째 로 이용 할 수 있 는 위 치 를 가리킨다.
2. 마지막 으로 저 장 된 데이터 의 위 치 를 가리킨다.
이 두 가 지 는 실현 하기 에는 약간의 차이 가 있 으 니, 스스로 주의 하면 된다.
나의 간단 한 실현 코드 를 붙 여 라.
헤더 파일 stack. h:
include 
using namespace std;
template
class stack
{
	private:
		E *arr;
		int size;
		int top=0;
	public:
		stack(int s)
		{
			size=s;
			arr=new E[s];
			top=0;
		}
		~stack()
		{
			delete arr;
		}
		bool push(E it)
		{
			if(top==size)
			{
				cout<

main.cpp
#include"stack.h"
int main()
{
	stacksta(3);
	sta.push(1);
	sta.push(2);
	sta.push(3);
	sta.pop();
	sta.push(4);
}

특히 우리 의 clear () 는 top = 0 만 있 으 면 됩 니 다. 왜 그런 지 생각해 보 세 요.

좋은 웹페이지 즐겨찾기