思维导图
#include "link_stack.h"
//申请结点
node_p create_node(int data)
{
node_p new=(node_p)malloc(sizeof(node));
if(new==NULL)
{
printf("申请结点失败");
return;
}
new->data=data;
return new;
}
//入栈
void push_stack(node_p *T,int data)
{
//不需要判断入参为空,因为T在栈区;
node_p new=create_node(data);
new->next=*T;
*T=new;
}
//判空
int empty_stack(node_p T)
{
node_p new=T;
if(new==NULL)
{
printf("栈为空");
return;
}
return T=NULL?1:0;
}
//出栈
void pop_stack(node_p *T)
{
node_p del=*T;
*T=(*T)->next;
free(del);
}
//输出栈
void show_stack(node_p T)
{
node_p p=T;
while(p!=NULL)
{
printf("%d->\t",p->data);
p=p->next;
}
putchar(10);
}