/*
1.节点初始化
2.创建栈
3.检测栈是否为空
4.进栈
5.出栈
6.返回栈顶元素
7.打印栈
*/
#include <stdio.h>
#include <malloc.h>
typedef struct stack
{
int element;
struct stack *next;
}
*Stack;
Stack createStack(void)
{
Stack S=malloc(sizeof(struct stack));
if(S==NULL)
{
printf("Out of space
");
return NULL;
}
else
{
S->next=NULL;
return S;
}
}
int isEmpty(Stack S)
{
return (S->next==NULL);
}
void push(Stack S,int element)
{
Stack Sptr=malloc(sizeof(struct stack));
if(Sptr==NULL)
{
printf("Out of space
");
}
else
{
Sptr->element=element;
Sptr->next=S->next;
S->next=Sptr;
}
}
void pop(Stack S)
{
Stack Stmp=NULL;
if(isEmpty(S))
{
printf("Stack empty
");
}
else
{
Stmp=S->next;
S->next=S->next->next;
free(Stmp);
}
}
int top(Stack S)
{
if(isEmpty(S))
{
printf("Stack empty
");
}
else
{
return (S->next->element);
}
}
void printStack(Stack S)
{
Stack Sptr=S->next;
while(Sptr!=NULL)
{
printf("-------------
");
printf("| %d |
",Sptr->element);
printf("-------------
");
Sptr=Sptr->next;
}
}
int main(void)
{
int i=1;
Stack S=createStack();
for(i=1;i<7;i++)
{
push(S,i);
//createStack();
}
printStack(S);
}
运行结果: