创建一个栈存储结构,并且写入一些对栈的基本的操作

本文介绍了栈这一数据结构的概念及其实现方式,包括初始化、添加元素、删除元素等基本操作,并通过具体的代码示例展示了如何在程序中使用栈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是栈:简单的说就是一个容器,一个瓶子,我们向瓶子里面放糖果,当想吃糖果的时候,将瓶子里的糖果再倒出来。我们要实现的就是怎样创建一个瓶子,并且怎样很容易的向里面添加糖果,向吃糖果的时候可以拿出来,自然我们拿出来的糖果是瓶子上面的糖果,也就是最后放进去的糖果。

我们继续想:要模拟这样的一个瓶子,我们需要几个变量,简单点,我们需要知道瓶子的高度,瓶子盖子,和瓶子底部。这样我们就可以很形象的描述出一个瓶子。

typedef struct{SElemType *base;   SElemType *Top;   int stackSize;}SqStack;

其中SElemType就是我们向瓶子里面放的糖果。上面进行的是对瓶子的一个描述,然而瓶子并未出现,怎样来让瓶子出现,一个我们能够“碰的到”瓶子,一个可以让我操作的瓶子。

int InitStack(SqStack *S)

{

     S->base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));

      if(!S->base) return 0;    

      S->top=S->base;

      S->stackSize=0;

      return 1;

}

上面就是初始化一个栈,也就是我们的瓶子出现了。现在我们需要做的是向瓶子里面添加糖果

int Push(SqStack *S,SElemType e)

{

//你可以不断的输入,改变e的值,然后调用这个函数,就可以实现向栈中插入数据元素

if(S->top-S->base>=S->stackSize) 

   {

         S->base=(SElemType *)realloc(S->base,(S->stackSize+STACKINCREMENT)*sizeof(SElemType));

         if(!S->base) exit(OVERFLOW);

         S->top=S->base+S->stackSize;

         S->stackSize=S->stackSize+STACKINCREMENT;

    }

    *S->top++=e;

   return  OK;

}

//然后我们需要做的是,可以删除栈顶的元素,并且将栈顶元素存储到e中

int Pop(SqStack *S,SElemType e)

{

    if(S->top==S->base)

    return ERRIR;

   e=*(--S->top);

   return OK;

}

//获取栈顶的元素

int getTop(SqStack *S,SElemType e)

{

        if(S->base==S->top)

         return ERROR;

        e=*(S->top-1);

       return OK;

}

//遍历栈中的元素

int  goEveryElem(SqStack *S)

{

     if(S->top==S->base)

     return ERROR;

    int length=S->top-S->base;

    int i=0;

    S->top=S->base;

    for(S->top,i;i<=length;i++,S->top++)

   {

        cout<<*(S->top);

   }

}

上面就是对栈的一个基本的了解,当然还有很多对栈的操作,这个地方也就不一一的叙述,在下面的文章中将会继续 的讲解栈的一些应用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值