데이터 구조 위조 코드 의 실현 (창고)
#include
#include
#include
#include
typedef struct Node
{
int data;
struct Node *pNext;
}NODE,*pNODE;//
typedef struct Stack
{
pNODE pTop;//
pNODE pBottom;//
}STACK,*pSTACK;//
void init(pSTACK );
void push(pSTACK ,int );
void traverse(pSTACK );
bool pop(pSTACK ,int *);
void clear(pSTACK );
bool is_empty(pSTACK );
int main(void)
{
STACK s;//
int val;
init(&s);//
//
push(&s,1);
push(&s,33);
push(&s,9);
push(&s,7);
push(&s,8);
//
traverse(&s);
//
if(pop(&s,&val))
{
printf(" ! :%d
",val);
}else printf(" !");
traverse(&s);
//
clear(&s);
if(is_empty(&s))
printf(" !
");
return 0;
}
void init(pSTACK ps)
{
ps->pTop=(pNODE)malloc(sizeof(NODE));
if(ps->pTop==NULL)
{
printf(" !
");
exit(-1);
}
else
{
//
ps->pBottom=ps->pTop;
ps->pTop->pNext=NULL;
}
}
void push(pSTACK ps,int val)
{
pNODE pNew=(pNODE)malloc(sizeof(NODE));//
pNew->data=val;
pNew->pNext=ps->pTop;//
ps->pTop=pNew;//
}
void traverse(pSTACK ps)
{
pNODE p=ps->pTop;
while(p!=ps->pBottom)
{
printf("%d\t",p->data);
p=p->pNext;
}
printf("
");
}
bool is_empty(pSTACK ps)
{
if(ps->pBottom==ps->pTop)
return true;
else return false;
}
//
bool pop(pSTACK ps,int *pval)
{
if(is_empty(ps))
{
return false;
}
else
{
pNODE r=ps->pTop;
*pval=r->data;
ps->pTop=r->pNext;//
free(r);
r=NULL;
return true;
}
}
//
void clear(pSTACK ps)
{
if(is_empty(ps))
return ;
else
{
pNODE p=ps->pTop;
pNODE q=NULL;
while(p!=ps->pBottom)
{
// q p , free p, q p
q=p->pNext;
free(p);
p=q;
}
ps->pTop=ps->pBottom;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
centos yum 창고 구축yum 창고 소개 yum (모두 Yellow dog Updater, Modified 라 고 함) 은 Fedora 와 RedHat 에 있 는 Shell 전단 패키지 관리자 입 니 다.RPM 패키지 관 리 를 바탕 으로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.