数据结构与经典算法(二)

第三章、栈
栈是一种特殊的线性表,一般来说在线性表的插入删除不受控制,而栈上的插入删除操作会受限制,栈的插入和删除操作是在童一端进行的。
一、栈
1.基本概念
栈是仅限定在表的一端进行插入或删除操作的线性表。
允许插入和删除操作的顶端称为栈顶,处于栈顶位置的元素称为栈顶元素。相应的称为栈底。栈中含有的元素个数称为栈长;不含元素的空表称为空栈。
由于栈的插入和删除运算仅在栈顶一端进行,后进栈的元素必定先出栈,所以又把栈称为后进先出表(Last In First Out, 简称LIFO)。
2.栈的顺序存储结构
栈既然是一种线性表,所以线性表的顺序存储和链接存储结构同样适用于栈。
栈的顺序存储结构同样需要使用一个数组和一个整型变量来实现,利用数组来顺序存储栈中的所有元素,为了方便将数组的最后一个元素作为栈顶;利用整型变量top来存储栈顶元素的下标,其作用相当于栈顶指针,若top初始值为-1则表示空栈。
栈的基本操作
(1)初始化操作:生成长为len的非空栈,len不能超过数组的最大长度

#include "stdio.h"
#define maximum 100   /*最大空间*/
int top=-1;
Datatype stack[maximum];
void CreatStack(int *stack,int len)   //创建顺序栈
{

        if(len>maximum)
        {
            printf(""长度超过最大限制);
            return;
        }
        int value;
        for(int count=0;count<len;count++)
        {
            scanf("%d",&value);
            stack[count]=value;
            top++;
        }
}

(2)入栈操作:
首先将top指针后移一位即值+1,然后在此处插入新元素x;当top==maximum-1的时候,表示栈满,不能插入

void Push(int *h,int value)
{
      if(top==maximum-1)
      {
            printf("栈满");
            return;
      }

      top++;
      h[top]=value;
      return;
}

(3)出栈操作:
首先将top指针处元素x出栈;top值-1;

void Pop(int *hint *e)     //e存放出站元素的值
{
      if(top==-1)
      {
            printf("栈空");
            return;
      }

      *e=h[top];
      top--;
      return;
}

(4)计算栈长:
栈长=top+1(由于top表示数组下表,从0开始)

int StackLength()     //e存放出站元素的值
{
      return(top+1);
}

回头再看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值