스 택, 팀 데이터 구조
첫 번 째 정의 (추천, 동적 분배 Stack SIZE 가능)
typedef struct {
ElemType *base; // stack base;
int top; // stack top;
int stacksize; // , ; MAXSIZE
}SqStack;
두 번 째 정의 (고정 Stack 의 SIZE)
typedef struct {
ElemType stack[MAXSIZE]; // ,
int top; // stack top;
} SqStack;
/* */
// struct base, top, stacksize;
Status InitStack(SqStack *S) {
S->base = (ElemType *)malloc(SIZE*sizeof(ElemType));
S->stacksize = SIZE;
S->top = 0;
return 0;
}
/*GetTop*/
// , base[top-1];
ElemType GetTop(SqStack *S) {
if (S->top==0) {printf("GetTop UNDERFLOW
"); return ERROR;}
else {return S->base[S->top-1];}
}
/*Pop*/
// , top-- ;
Status Pop(SqStack *S) {
if (S->top==0) {printf("Pop UNDERFLOW
"); return ERROR;}
else {S->top--; return 0;}
}
/**/
// , realloc , push e top , top ;
Status Push (SqStack *S, ElemType e) {
if (S->top >= SIZE) {
S->base = (ElemType *)realloc(S->base,(SIZE+INCREMENT)*sizeof(ElemType));
S->stacksize += INCREMENT;
if (!S->base) {printf("Push OVERFLOW
"); exit(OVERFLOW);}
}
S->base[S->top] = e;
S->top++;
return 0;
}
Queue
typedef struct {
ElemType *base; // ,
int front, rear;
int length; // , num ; stack , length top ;
int queuesize;
}SqQueue;
/*GetFront*/
// length==0, base[front]
ElemType GetFront(SqQueue *Q) {
if (Q->length==0) {
printf("GetFront UNDERFLOW
"); return ERROR;
} else {
return Q->base[Q->front];
}
}
// Q , front ;
Status DeQueue(SqQueue *Q) {
if (Q->length==0) {
printf("DeQueue UNDERFLOW
"); return ERROR;
} else {
Q->front++;
}
}
// Q , , rear, length ++
Status EnQueue(SqQueue *Q, ElemType e) {
if (Q->length==SIZE) {
//
Q->base = (ElemType *)realloc(Q->base,(SIZE+INCREMENT)*sizeof(ElemType));
Q->queuesize += INCREMENT;
if (!Q->base) {printf("EnQueue OVERFLOW
"); exit(OVERFLOW);}
}
Q->base[Q->rear] = e;
Q->rear++;
Q->length++;
printf("rear: %d
",Q->rear);
return 0;
}
후기: queue 의 데이터 구조 정의 와 stack 의 기본 적 인 세트 는 모두 순서 선형 표 의 정의 방식 (* elem, length, listize → stack / queue (배열 이름 은 지침), top / front, rear, length, size (top 자체 가 length 를 계산 하 는 방법 을 포함) 을 사용 합 니 다.
DFS 와 스 택, BFS 와 대기 열
스 택 과 대기 열 은 간단 하고 사용 하 는 데이터 구조 로 사용 범위 가 넓 습 니 다. 그림 알고리즘 에서 가장 기본 적 인 DFS 와 BFS 알고리즘 의 실현 은 각각 스 택 과 대기 열 에 의존 합 니 다. 관련 알고리즘 코드 는 제 그림 알고리즘 글 을 참고 할 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.