栈的基本操作


下面先实现站的基本功能,最后通过一个Test来测试下方法是否实现

建个.c文件

typedef struct
{
    DATA data[Size+1];
    int top;
} SeqStack;
//初始化 
SeqStack *SeqStackInit()
{
    SeqStack *p;
    if(p=(SeqStack *)malloc(sizeof(SeqStack)))
    {
        p->top = 0;
        return p;
    }
    return NULL;
}
//判断栈是否为空 
int SeqStackIsEmpty(SeqStack *s)
    {
        return (s->top==0);
    }
    
void SeqStackFree(SeqStack *s)
    {
    if(s)
    free(s);
    } 
 //判断栈是否是满的   
int SeqStackIsFull(SeqStack *s)
{
    return (s->top==Size);
}
//入栈
int SeqStackIn(SeqStack *s,DATA data)
{
    if((s->top+1)>Size)
    {
        printf("栈已满");
        return 0 ; 
    }
    s->data[++s->top]=data;
    return 1;
} 

//出栈
DATA SeqStackOut(SeqStack *s)
{
    
    if(s->top ==0)
    {
        printf("栈为空");
        exit(0); 
    }
    return (s->data[s->top--]);
} 

//读栈顶元素
DATA SeqStackPeek(SeqStack *s) 
{
    if(s->top==0)
    {
       printf("栈为空");
exit(0);   
    }
    return (s->data[s->top]);
}


    
    

接着一个测试文件
#include "stdio.h"
#include "stdlib.h"
#define Size 50
typedef struct
{
    char name[15];
    int age;
}DATA;
#include "SeqStack.c"
int main()
{
    SeqStack *stack;
    DATA data,data1;
    stack = SeqStackInit();
    printf("入栈000\n");
    printf("输入姓名 年龄进行入栈\n");
   scanf("%s%d",data.name,&data.age);
   SeqStackIn(stack,data);
  printf("输入姓名 年龄进行入栈\n");
   scanf("%s%d",data.name,&data.age);
   SeqStackIn(stack,data);
   printf("按任意键进行出栈操作\n");
   getch();
   data1 = SeqStackOut(stack);
   printf("出栈数据是%s %d\n",data1.name,data1.age); 
   printf("再按任意键进行出栈操作\n");
   getch();
   data1 = SeqStackOut(stack);
   printf("出栈数据是%s %d\n",data1.name,data1.age);
   SeqStackFree(stack);
   getch();
    return 0;
} 

下面是效果图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值