창고 출입 분석
#include <stdlib.h>
#include "stdio.h"
#include<string.h>
typedef char SElemType; //
#define STACK_INIT_SIZE 10 //
#define STACKINCREMENT 10 //
typedef struct
{
SElemType *base; // ,base NULL
SElemType *top; //
int stacksize; // ( sizeof(SElemType) )
}Stack;
char InitStack(Stack &S)
{
S.base=(SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType)); // malloc
if (!S.base)
return 0; // , 0
S.top=S.base; //
S.stacksize=STACK_INIT_SIZE; //
return 1;
}
char StackEmpty(Stack S)
{
if (S.base)
{
if (S.base==S.top) // , 1(true), 0(false)
{
return 1;
}
}
return 0;
}
char Push(Stack &S,SElemType e)
{
if (S.base)
{
if ((S.top-S.base)>=S.stacksize) // ,
{
S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT)* sizeof(SElemType));
if(S.base==NULL)
return 0; // , 0(false),
S.top=S.base+S.stacksize; //
S.stacksize+=STACKINCREMENT; //
}
*S.top++=e;
return 1;
}
return 0;
}
//*S.top++=e
// ++, S.top , S E, 1
//*++S.top=e
// ++, S.top 1, S E。
char Pop(Stack &S,SElemType &e)
{
if (S.base)
{
if (S.top>S.base) //
{
e=*--S.top;
return 1;
}
}
return 0;
}
char StackTraverse(Stack &S)//
{
int i;
if (S.base)
{
printf("
:
");
for(i=0;i<S.top-S.base;i++)
{
printf("%c ",S.base[i]); //
}
printf("
");
return 1;
}
return 0;
}
void main()
{
Stack S;
char x,y;
InitStack(S);
x='c';y='k';
Push(S,x);StackTraverse(S);
Push(S,'a');StackTraverse(S);
Push(S,y);StackTraverse(S);
Pop(S,x);StackTraverse(S);
Push(S,'t');StackTraverse(S);
Push(S,x);StackTraverse(S);
Pop(S,x);StackTraverse(S);
Push(S,'s');StackTraverse(S);
while(!StackEmpty(S)){
Pop(S,y);StackTraverse(S);
printf("%c",y);
}
printf("%c
",x);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.