Stack&Queue(6) - removeUntilStack 함수 구현하기
스택에서 특정 값이 나올 때까지 pop하는 함수
주어진 요소 확인하기
구조체
- Stack: (struct) 스택 구조체
- ll: (LinkedList) 스택 연산 구현을 위한 연결 리스트 구조체
- LinkedList: (struct) 연결 리스트 구조체
- size: (int field) 연결 리스트 요소 갯수
- *head: (pointer field) 연결 리스트 첫 노드의 주소
- ListNode: (struct) 노드 구조체
- item: (int field) 노드의 값
- *next: (pointer field) 다음 노드의 주소
removeUntilStack 함수의 매개 변수
- *s: (pointer) 스택 주소
- value: (int) 스택에서 찾는 값
핵심 아이디어
- 스택이 비어 있다면 return
- 스택이 빌 때까지 하나씩 pop하면서 값을 확인
- 만약 값이 찾는 값(value)과 같다면 해당 값을 다시 push 후 return
- 찾는 값이 없다면 빈 스택이 된 채로 return
구현하기
void removeUntil(Stack *s, int value) {
if (s == NULL) return; // 스택이 비어있다면 return
int cur_val;
while (!isEmptyStack(s)) {
cur_val = pop(s); // 스택에서 값 꺼내기
if (cur_val == value) {
push(s, cur_val); // 찾았으면 다시 넣고 종료
break;
}
}
}
'크래프톤 정글 > Code 정글(C언어)' 카테고리의 다른 글
[C언어] 이진 트리(Binary Tree) 구현 실습하기 (0) | 2025.04.14 |
---|---|
[C언어] Stack&Queue(7) - balanced 함수 구현하기 (0) | 2025.04.13 |
[C언어] Stack&Queue(5) - recursiveReverseQueue 함수 구현하기 (0) | 2025.04.13 |
[C언어] Stack&Queue(4) - reverseQueue 함수 구현하기 (0) | 2025.04.13 |
[C언어] Stack&Queue(3) - isStackPairwiseConsecutive 함수 구현하기 (0) | 2025.04.13 |