[데이터 구조] 스택의 상세 구현(c언어)

목차

1. 스택의 기본 개념

2. 스택의 기본 구조

편집하다

3. 스택 구현


1. 스택의 기본 개념

스택: 고정된 끝에서만 요소의 삽입 및 삭제를 허용하는 특수한 선형 목록입니다 . 데이터 삽입 및 삭제 작업이 수행되는 한쪽 끝을
스택의 상단이라고 하고 다른 쪽 끝을 스택의 하단이라고 합니다. 스택의 데이터 요소는 LIFO(Last In First Out) 원칙 을 따릅니다 . 푸시(push) : 스택의 삽입 동작을 푸시/푸시/푸시라고 하며 들어오는 데이터는 스택의 맨 위에 있게 됩니다. 스택 팝핑(popping the stack) : 스택을 삭제하는 동작을 스택 팝핑이라고 합니다. 출력 데이터도 스택의 맨 위에 있습니다.

2. 스택의 기본 구조

 데이터 조각을 삽입할 때 삽입에 성공하면 이제 데이터가 스택의 최상위 요소가 됩니다.

스택으로 푸시되는 첫 번째 요소는 스택의 맨 아래 요소입니다.

스택에 첫 번째로 밀어넣은 요소는 스택의 맨 아래에 눌리는데, 어떤 요소를 빼야 할 때는 물론 스택 맨 아래에 있는 요소보다 위에 있는 요소만 먼저 빼낼 수 있다. 꺼낼 수 있습니다.

3. 스택 구현

스택의 구현은 두 가지 방법으로 나뉩니다. 1. 배열 구현 2. 연결 목록 구현

두 구현 모두 장단점이 있지만 상대적으로 배열 구현이 낫다고 생각합니다.linked list를 사용하려면 스택에 push될 때마다 공간을 적용해야 하고 스택에서 pop될 때 공간을 해제해야 합니다. 스택, 반면 어레이는 용량이 가득 찼을 때만 채워지면 됩니다. 확장 시 가장 중요한 것은 어레이의 물리적 구조가 연속적이라는 것입니다. 캐시를 계산할 때 적중률이 더 높고 읽기 효율이 더 높습니다. 더 높은.

연결 리스트의 구현은 두 가지 방법으로 나뉘는데, 하나는 스택 끝에 삽입하는 방법과 스택 끝에 삭제하는 방법이다. 두 번째는 헤드가 스택에 삽입되고 스택이 제거되면 헤드가 삭제되는 경우입니다.

상대적으로 말하자면 두 번째 방법이 더 나은데, 꼬리 삽입과 꼬리 삭제는 매번 꼬리를 찾아야 하고 시간 복잡도는 O(n)인 반면 머리 삭제와 머리 삽입은 꼬리를 찾을 필요가 없기 때문입니다. 복잡도는 O(1)

ok, 연결 리스트에 의한 스택 구현에 대해서는 자세히 설명하지 않겠습니다. 오늘 이야기의 주요 내용은 스택을 배열로 구현하는 것입니다.

배열은 스택을 구현하는데, 스택에 밀어넣는 것은 이전에 시퀀스 테이블을 구현했을 때 테일 삽입과 같고 , 팝 아웃 하면 시퀀스 테이블의 테일 삭제 와 같다 . , 그들의 시간 복잡도는 O(1)

아래 그림에서 우리는 스택의 맨 아래에 있는 요소가 항상 가장 먼저 들어가는 것을 볼 수 있습니다. 스택에서 팝되고 스택 맨 위는 이 요소의 이전 요소입니다.

요약하면 스택의 맨 위 요소는 실제로 배열의 마지막 요소 입니다.

 stack by array의 구현은 단어로 거의 완료되었습니다. 이제 코드로 구현을 시작하겠습니다.

1. 관련 인터페이스 기능

2. 구조 정의

 3. 초기화

초기화 top==0, 이때 top은 스택의 요소 수를 나타내고 스택에서 맨 위 요소의 다음 위치를 나타냅니다. 즉, [ top-1]은 스택의 맨 위 요소를 나타냅니다.

 4. 스택에 넣기

스택에 밀어 넣을 때 스택이 가득 차 있는지 판단하고 가득 차면 용량을 확장해야 합니다.

 5. 스택이 비어 있는지 확인

top이 0이면 스택이 비어 있음

 6. 팝 아웃

아래 그림에서 스택의 최상위 요소를 얻으려면 스택이 비어 있을 때 데이터[-1] 위치에 대한 액세스를 방지하기 위해 어설션해야 합니다(불법 액세스).

 

다음 그림과 같이 스택의 맨 위 요소를 얻는 것과 관련하여 스택에서 팝핑이 사용됨  을 선언합니다 .

 이 시점에서 스택의 맨 위 요소를 얻은 다음 스택에서 팝합니다.

7. 스택의 요소 수 가져오기

 

 8. 스택의 파괴

이상으로 스택에 대한 지식 공유를 마칩니다. 도움이 되셨다면 좋아요 부탁드립니다. 많은 지원 부탁드립니다.

개선의 여지가 있습니까, 모두가 지적할 수 있기를 바랍니다

886!

추천

출처blog.csdn.net/m0_72532428/article/details/129748918