#include "link_stack.h"
/***************************************************************
* @brief 创建栈元素节点
* @param data 节点存放的数据
* @retval NULL 申请空间失败
* 非空 节点的结构体指针
**************************************************************/
node_p create_node(int data){
node_p p=(node_p)malloc(sizeof(node));
if(p==NULL){
printf("空间申请失败\n");
return NULL;
}
p->data=data;
return p;
}
/***************************************************************
* @brief 入栈
* @param T 栈顶的二级指针
* data 入栈的数据
* @retval 无
* @note 循环前插
**************************************************************/
void push_stack(node_p* T,int data){
node_p new = create_node(data);
new->next_p=*T;
*T=new;
}
/***************************************************************
* @brief 出栈
* @param T 栈顶的二级指针
* @retval 无
**************************************************************/
void pop_stack(node_p *T){
if(empty_stack(*T)){
printf("栈为空\n");
return;
}
//保存要释放的结点首地址
node_p temp=*T;
*T=(*T)->next_p;
free(temp);
}
/***************************************************************
* @brief 栈判空
* @param T 栈顶指针
* @retval 1 空
* 0 非空
**************************************************************/
int empty_stack(node_p T){
return T==NULL;
}
/***************************************************************
* @brief 输出栈
* @param T 栈顶指针
* @retval 无
**************************************************************/
void show_link_stack(node_p T){
if(empty_stack(T)){
printf("栈为空\n");
return;
}
node_p temp=T;
while(temp!=NULL){
printf("%d->", temp->data);
temp=temp->next_p;
}
putchar(10);
}
4.18啊啊啊啊啊啊啊啊啊
最新推荐文章于 2024-07-24 22:34:26 发布