데이터 구조의 창고 면접 문제: 최소 창고 의 실현
가장 작은 창고 의 실현
가장 작은 스 택 이 무엇 인지, 가장 작은 스 택 은 스 택 에 들 어 가 는 순 서 를 파괴 하지 않 는 전제 에서 스 택 꼭대기 에 스 택 내 요소 의 최소 값 을 영원히 저장 한 다 는 뜻 이다.우리 의 사고방식 은 매번 창고 에 들 어 갈 때마다 두 개의 창고 에 들 어 가 는 것 이다. 첫 번 째 는 창고 에 들 어가 야 할 요소 이 고 두 번 째 는 창고 에 들 어 갈 때 가장 작은 원소 이다.
//
#include
#include "seqstack.h"
typedef struct Min_SeqStack {
SeqStack stack;
}Min_SeqStack;
void Min_SeqStackPrint(Min_SeqStack* s)
{
if(s == NULL) {
return;
}
size_t i = 0;
for(; i < s->stack.size; i++) {
printf("%c ", s->stack.data[i]);
}
printf("
");
}
void Min_SeqStackInit(Min_SeqStack* s)
{
if(s == NULL) {
return;
}
SeqStackInit(&s->stack);
return;
}
void Min_SeqStackPush(Min_SeqStack* s, SeqStackType value)
{
if(s == NULL) {
return;
}
SeqStackType top;
SeqStackType min;
if(s->stack.size == 0) {
SeqStackPush(&s->stack, value);
SeqStackPush(&s->stack, value);
} else {
SeqStackGetFront(&s->stack, &top);
min = top < value ? top : value;
SeqStackPush(&s->stack, value);
SeqStackPush(&s->stack, min);
}
return;
}
void Min_SeqStackPop(Min_SeqStack* s)
{
if(s == NULL) {
return;
}
if(s->stack.size == 0) {
return;
}
SeqStackPop(&s->stack);
SeqStackPop(&s->stack);
}
int Min_SeqStackTop(Min_SeqStack* s, SeqStackType* value)
{
if(s == NULL) {
return -1;
}
if(s->stack.size == 0) {
return -1;
}
return SeqStackGetFront(&s->stack, value);
}
여기 서 우 리 는 이전의 순서 창고 의 일부 함 수 를 빌려 서 우리 가 실현 하 는 것 을 도 왔 다.테스트 코드 는 다음 과 같 습 니 다:
int main()
{
Min_SeqStack s;
Min_SeqStackInit(&s);
Min_SeqStackPush(&s, 'a');
Min_SeqStackPush(&s, 'c');
Min_SeqStackPush(&s, 'd');
Min_SeqStackPush(&s, 's');
Min_SeqStackPrint(&s);
SeqStackType value;
Min_SeqStackTop(&s, &value);
Min_SeqStackPrint(&s);
printf("%c
", value);
Min_SeqStackPop(&s);
Min_SeqStackPrint(&s);
Min_SeqStackTop(&s, &value);
printf("%c
", value);
Min_SeqStackPop(&s);
Min_SeqStackPrint(&s);
Min_SeqStackTop(&s, &value);
printf("%c
", value);
Min_SeqStackPop(&s);
Min_SeqStackPrint(&s);
Min_SeqStackTop(&s, &value);
printf("%c
", value);
return 0;
}
여러분 이 공동으로 토론 하 는 것 을 환영 합 니 다. 만약 잘못 이 있 으 면 즉시 작가 에 게 연락 하여 지적 하고 고치 세 요.감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.