链栈ADT的实现(C语言) 2018.3.13

#include <stdio.h>
#include <stdlib.h>
/**< 链栈的实现 */
/**< 栈结点实现 */
typedef struct
{
    int data;
    struct StNode* next;
}StNode;
/**< 栈结构实现 */
typedef struct
{
    StNode* top;
    StNode* base;
}Stack;
/**< 初始化栈(初始化头结点,首尾指针分别指向头结点) */
void Init_Stack(Stack* q)
{
    StNode* p;
    p->data=NULL;
    p->next=NULL;
    q->top=p;
    q->base=p;
}
/**< 栈判空 */
int Empty_Stack(Stack* p)
{
    if(p->top==p->base)
        return 1;
    else return 0;
}
/**< 压栈 */
void Push_Stack(Stack* q,int Val)
{
    StNode* p;
    p->data=Val;
    p->next=q->top->next;
    q->top->next=p;
}
/**< 出栈 */
void Pop_Stack(Stack* q,int *Val)
{

    if(Empty_Stack(q)==0)
    {
        StNode* b=q->top->next;
        StNode* a;
        *Val=b->data;
        a=q->top->next;
        q->top->next=b->next;
    }
    else;
}
/**< 打印栈顶元素 */
void GetTop_Stack(Stack* q)
{
    StNode* a=q->top->next;
    printf("%d",a->data);
}
int main()
{
    Stack S;
    Init_Stack(&S);
    printf("Hello world!\n");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值