链栈的C语言实现

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define ERROR -1
#define OK 1
///链栈的实现:链栈是运算受限的单链表,其插入和删除只能在表头位置上进行。
typedef struct Stack_Node
{
    int data;
    struct Stack_Node *next;
}Stack_Node;
///初始化链栈
Stack_Node *Init_Link_Stack()
{
    Stack_Node *top;
    top=(Stack_Node*)malloc(sizeof(Stack_Node));
    top->next=NULL;
    return top;
}
///元素进栈
int push_Stack_Node(Stack_Node *top, int e)
{
    Stack_Node *p;
    p=(Stack_Node*)malloc(sizeof(Stack_Node));
    if (!p)
    {
        return ERROR;
    }
    p->data=e;
    p->next=top->next;
    top->next=p;
    return OK;
}
///元素出栈
int pop_Stack_Node(Stack_Node *top, int m)
{
    Stack_Node *p;
    if(top->next==NULL)
    {
        printf("无元素可出栈\n");
        return ERROR;
    }
    p=top->next;
    m=p->data;
    top->next=p->next;
    free(p);
    return OK;
}
///遍历链栈
int Stack_Node_Travel(Stack_Node *top)
{
    int e;
    if(top==NULL)
    {
        printf("链栈中无元素\n");
    }
    Stack_Node *ptr;
    ptr=top;
    while(ptr->next)
    {
        ptr=ptr->next;
        e=ptr->data;
        printf("%d\n",e);
    }
    return OK;
}
///取链栈的栈顶元素
int GetTopStack_Node(Stack_Node *top)
{
    int e;
    if(top->next!=NULL)
    {
        top=top->next;
        e=top->data;
        printf("The element of top:%d\n",e);
    }
}
int main()
{
    int x;
    int e;
    Stack_Node *top=Init_Link_Stack();
    for(x=1;x<5;x++)
    {
        push_Stack_Node(top,x);
    }
    Stack_Node_Travel(top);
    GetTopStack_Node(top);
    pop_Stack_Node(top,e);
    Stack_Node_Travel(top);

}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听离

请作者吃个棒棒糖吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值