栈的简单实现

最近在看C语言数据结构,写了个简单的栈,方便以后复习。

#include "stdio.h"

#include "stdlib.h"
typedef struct stu
{
int data;
struct stu *pNext;
}Stu;
typedef struct sck
{
Stu * pTop;
Stu * pBottom;
}Sck;
void init(Sck *ck)
{
ck->pBottom=(Stu *)malloc(sizeof(Stu));
ck->pTop=ck->pBottom;
ck->pBottom->pNext=NULL;
}
void push(Sck *ck,int temp)
{
Stu * pNew=(Stu *)malloc(sizeof(Stu));
pNew->data=temp;
pNew->pNext=ck->pTop;
ck->pTop=pNew;
}
void shuchu(Sck *ck)
{
Stu * pTemp=ck->pTop;
while(pTemp!=ck->pBottom)
{
printf("%d ",pTemp->data);
pTemp=pTemp->pNext;
}
putchar('\n');
}
bool kong(Sck *ck)
{
if(ck->pTop==ck->pBottom) return true;
else return false;
}
bool pop(Sck *ck,int * temp)
{
if(kong(ck))return false;
else
{
Stu *p=ck->pTop->pNext;
*temp=ck->pTop->data;
free(ck->pTop);
ck->pTop=p;
return true;
}
}
void clean(Sck *ck)
{
if(kong(ck))return;
else
{
while(!kong(ck))
{
Stu *p=ck->pTop->pNext;
free(ck->pTop);
ck->pTop=p;
}

}
}
void main()
{
int val;
Sck ck;
init(&ck);
push(&ck,1);
push(&ck,2);
shuchu(&ck);
if(pop(&ck,&val))
printf("%d\n",val);
else
printf("error!\n");
shuchu(&ck);
clean(&ck);
shuchu(&ck);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值