最近在看C语言数据结构,写了个简单的栈,方便以后复习。
#include "stdio.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);
}