_DataStructure_C_Impl: 공유 창고
// _DataStructure_C_Impl:
#include<stdio.h>
#include<stdlib.h>
#define StackSize 100
typedef char DataType;
//
typedef struct
{
DataType stack[StackSize];
int top[2];
}SSeqStack;
//
void InitStack(SSeqStack *S){
S->top[0]=0;
S->top[1]=StackSize-1;
}
// 。 1, 0
int PushStack(SSeqStack *S,DataType e,int flag){
if(S->top[0]==S->top[1]) // ,
return 0;
switch(flag){
case 0: // flag 0,
S->stack[S->top[0]]=e; //
S->top[0]++; //
break;
case 1: // flag 1,
S->stack[S->top[1]]=e; //
S->top[1]--; //
break;
default:
return 0;
}
return 1;
}
//
int PopStack(SSeqStack *S,DataType *e,int flag){
switch(flag){ // ,
case 0:
if(S->top[0]==0) // , 0,
return 0;
S->top[0]--; //
*e=S->stack[S->top[0]]; // e
break;
case 1:
if(S->top[1]==StackSize-1) //// , 0,
return 0;
S->top[1]++; //
*e=S->stack[S->top[1]]; // e
break;
default:
return 0;
}
return 1;
}
// 。 e, 1 ; 0 。
int GetTop(SSeqStack S,DataType *e,int flag){
switch(flag){
case 0:
if(S.top[0]==0)
return 0;
*e=S.stack[S.top[0]-1];
break;
case 1:
if(S.top[1]==StackSize-1)
return 0;
*e=S.stack[S.top[1]+1];
break;
default:
return 0;
}
return 1;
}
int StackEmpty(SSeqStack S,int flag){
switch(flag){
case 0:
if(S.top[0]==0)
return 1;
break;
case 1:
if(S.top[1]==StackSize-1)
return 1;
break;
default:
return 0;
}
return 0;
}
void main(){
SSeqStack S1,S2; /* */
int i;
DataType a[]={'a','b','c','d','e'};
DataType b[]={'x','y','z','r'};
DataType e1,e2;
InitStack(&S1); /* */
InitStack(&S2);
for(i=0;i<sizeof(a)/sizeof(a[0]);i++) /* a */
{
if(PushStack(&S1,a[i],0)==0)
{
printf(" , !");
return;
}
}
for(i=0;i<sizeof(b)/sizeof(b[0]);i++) /* b */
{
if(PushStack(&S2,b[i],1)==0)
{
printf(" , !");
return;
}
}
if(GetTop(S1,&e1,0)==0)
{
printf(" ");
return;
}
if(GetTop(S2,&e2,1)==0)
{
printf(" ");
return;
}
printf(" S1 :%c, S2 :%c
",e1,e2);
printf("S1 :");
i=0;
while(!StackEmpty(S1,0))
{
PopStack(&S1,&e1,0);
printf("%4c",e1);
}
printf("
");
printf("S2 :");
while(!StackEmpty(S2,1))
{
PopStack(&S2,&e2,1);
printf("%4c",e2);
}
printf("
");
system("pause");
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.