데이터 구조 -- 순서 창고 의 기본 조작
// : FILO
#define SATCK_INIT_SIZE 100 //
#define STACKINCREMENT 10 //
#include
#include
typedef struct {
int * base;//
int * top; // // top
int stack_size;
} Sqstack;
void Init_stack(Sqstack *); //
void Fill_stack(Sqstack *); //
void Print_stack(Sqstack *); //
void Delete_stack_top(Sqstack *); //
void Add_stack_top(int ,Sqstack *); //
void Judge_full(Sqstack *); // ,
int main() //
{
Sqstack * S;
int e=100;
S = (Sqstack *)malloc(sizeof(Sqstack));
// Sqstack p;
// S =& p;
// (dev ,vs2017 ), ,
Init_stack( S );
Fill_stack( S);
Print_stack(S);
Delete_stack_top(S);
Print_stack(S);
Add_stack_top(e,S);
Print_stack(S);
return 0;
}
void Init_stack(Sqstack * S )
{
S->base = (int *)malloc(SATCK_INIT_SIZE *sizeof(int ));
if(!S->base)
{
printf("Fail to build the stack");
exit(1);
}
S->top = S->base; //
S->stack_size = SATCK_INIT_SIZE; //
}
void Fill_stack(Sqstack *S)
{
int i;
for(i=0;i<9;i++)
{
Judge_full(S);
*S->top++ = i; // i *S->top, ,
}
}
void Print_stack(Sqstack *S )
{
int * p;
p = S->top;
if(S->base ==S->top ) //
{
printf("the stack is empty");
exit(3);
}
printf("the elements of the stack:
");
while(p != S->base)
{
printf("%d ",*--p); //
}
printf("
");
}
void Delete_stack_top(Sqstack *S)
{
if(S->base ==S->top )
{
printf("the stack is empty");
exit(3);
}
S->top--; //
}
void Judge_full(Sqstack *S)
{
if((S->top)-(S->base) >= S->stack_size)
// // “>=” “==” ? >= ?
{
S->base = realloc(S->base,(S->stack_size + SATCK_INIT_SIZE)*sizeof(int )) ;
//
if(!S->base)
{
printf("the Stack is Full but Fail to Realloc");
exit(2);
}
S->top = S->base + S->stack_size; // “>=”
S->stack_size += SATCK_INIT_SIZE;
}
}
void Add_stack_top(int e,Sqstack *S)
{
Judge_full(S);
*S->top++ = e; // e
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.