데이터 구조 제3 장 스 택 과 대기 열 (1)
20531 단어 데이터 구조
//
#include
#include
#define OVERFLOW -2
#define FALSE 0
#define TRUE 1
#define OK 1
#define ERROR 0
typedef int Status;
//
#define STACK_INIT_SIZE 100 //
#define STACKINCREAMENT 10 //
typedef char SElemType;
typedef struct
{
SElemType *base; // base NULL
SElemType *top; //
int stacksize; //
}SqStack;
//
//
Status InitStack(SqStack *S);
// S
Status DestroyStack(SqStack *S);
// S
Status ClearStack(SqStack *S);
// TRUE
Status StackEmpty(SqStack S);
//
int StackLength(SqStack S);
//
Status GetTop(SqStack S,SElemType *e);
//
Status Push(SqStack *S,SElemType e);
//
Status Pop(SqStack *S,SElemType *e);
//
Status StackTraverse(SqStack S,Status( *visit)());
Status InitStack(SqStack *S)
{
S->base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!S->base) exit(OVERFLOW);//
S->top=S->base;
S->stacksize=STACK_INIT_SIZE;
return OK;
}
Status GetTop(SqStack S,SElemType *e)
{
if(S.top==S.base) return ERROR;
*e=*(S.top-1);
return OK;
}
Status Push(SqStack *S,SElemType e)
{
if(S->top-S->base>=S->stacksize)// ,
{
S->base=(SElemType *)realloc(S->base,(S->stacksize+STACKINCREAMENT)*sizeof(SElemType));
if(!S->base) exit(OVERFLOW);
S->top=S->base+S->stacksize;
S->stacksize+=STACKINCREAMENT;
}
// , ,top 1
*S->top++=e;
return OK;
}
Status Pop(SqStack *S,SElemType *e)
{
if(S->base==S->top) return ERROR;
*e=*--S->top;
return OK;
}
Status StackEmpty(SqStack S)
{
if(S.base==S.top)
{
return TRUE;
}
else
{
return FALSE;
}
}
Status ClearStack(SqStack *S)
{
S->top=S->base;
return OK;
}
Status DestroyStack(SqStack *S)
{
S->base=NULL;
return OK;
}
// ,
void conversion(SqStack *S)
{
// ,
SElemType quotient;
int N;
InitStack(S);
scanf("%d",&N);
while(N)
{
Push(S,N%8);
N=N/8;
}
while(!StackEmpty(*S))
{
Pop(S,"ient);
printf("%d",quotient);
}
}
//
// ,
// , ,
void LineEdit(SqStack *S)
{
char ch,c;
ch=getchar();
InitStack(S);
while(ch!=EOF)
{
while(ch!=EOF && ch!='
')
{
switch(ch)
{
case '#':Pop(S,&c); break;
case '@':ClearStack(S); break;
default:Push(S,ch); break;
}
ch=getchar();//
}
//
ClearStack(S);//
if(ch!=EOF) ch=getchar();
}
DestroyStack(S);
}
다음은 미궁 구 해 문제, 표현 식 구 치 문제 (계산기 의 핵심 원리) 창고 와 귀환 의 실현, 한 노 타 문제, 마 답 바둑판 문제, 8 황후 문제 등 도 있다.나중에 따로 열거 하 겠 습 니 다. 대열 은 다음 단계 에 다시 이야기 하 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.