数据结构复习-day04-SqStack栈的链式存储

数据结构复习-day04

SqStack栈的链式存储

//SKinBoy
#include<bits/stdc++.h>
using namespace std;

#define MAXSIZE 200
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

typedef int SElemType;
typedef int Status;
//以上定义看似繁琐,但如果在VScode等编辑器中打代码你会发现,会有关键字提醒,能够极大提高coding效率
typedef struct StackNode{
    SElemType data;
    struct StackNode *next;
}StackNode,*LinkStackptr;

typedef struct LinkStack{
    LinkStackptr top;
    int count;
}LinkStack;
Status InitStack(LinkStack *S){
//初始化栈
    S->top=NULL;
    S->count=0;
    return OK;
}
Status PushStack(LinkStack *s,SElemType e){
//将e压入栈
    LinkStackptr ss=(LinkStackptr)malloc(sizeof(StackNode));
    ss->data=e;//申请临时结点,值设为e
    ss->next=s->top;
    s->top=ss;
    s->count++;
    return OK;
}
Status PopStack(LinkStack *s,SElemType *e){
    LinkStackptr p;
    if (s->top==NULL){
        printf("stack is empty\n");
        return ERROR;
    }//判断是否为空
    *e=s->top->data;    //把栈顶的值赋值给e
    p=s->top;           //将栈顶结点赋值给p
    s->top=s->top->next;//将栈顶指针下移
    free(p);
    s->count--;
    printf("%d\n",(*e));
    return OK;
}
//还有很多函数没写(如Destorystack、Clearstack、printstack)但也不难
int main(){
    //main函数里面的东西就可以自己发挥了
    int k;
    LinkStack s;
    SElemType e;
    InitStack(&s);
    while(1){
    printf("入栈请输1,出栈请输2,结束请输0\n");
    scanf("%d",&k);
        if(k==1){
            scanf("%d",&e);
            PushStack(&s,e);
        }
        else if(k==2){
            PopStack(&s,&e);
            //printf("%d\n",e);
        }
        else if(k==0){
            break;
        }
    }
    
    return 0; 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值