c语言is stack empty,C语言 栈的初始化,入栈,出栈,判断栈是否为空,清空栈等函数...

#include

#include

typedef struct Node

{

int data ;

struct Node * pNext;

}*PNODE ,NODE ;

typedef struct stack

{

PNODE pTop;

PNODE pBottom;

}*PSTACK ,STACK;

void init(PSTACK pS);

void push(PSTACK pS,int val);

void show(PSTACK pS);

bool is_empty(PSTACK pS);

bool pop(PSTACK pS,int * pVal);

void clear(PSTACK pS);

int main()

{

STACK S ;//定义了一个静态的栈,是程序员不能自己释放的

int val ;

init(&S);

push(&S,1);

push(&S,2);

push(&S,3);

push(&S,4);

show(&S);

if(pop(&S,&val))

{

printf("出栈成功,出栈的元素是:%d\n",val);

}

else printf("出栈失败!");

show(&S);

clear(&S);

show(&S);

}

void init(PSTACK pS)

{

pS->pTop = (PNODE)malloc(sizeof(NODE));

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 show(PSTACK pS)

{

PNODE p =pS->pTop ;

while(p!=pS->pBottom)

{

printf("%d ",p->data);

p=p->pNext ;

}

printf("\n");

}

bool is_empty(PSTACK pS)

{

if(pS->pTop==pS->pBottom)

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 ;

while(q!=pS->pBottom)

{

q=p->pNext;

free(p);

p=q ;

}

}

pS->pTop=pS->pBottom;

}

原文:https://www.cnblogs.com/cocobear9/p/12261891.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>