栈的基本操作

1、利用CodeBlooks新建C++项目

1)用C++语言定义描述顺序栈的结构体;

2) 用C++语言完成顺序栈的初始化InitStack()、判断栈空StackEmpty()、入栈StackPush()、出栈StackPop()、获得栈顶元素GetTop()函数;

3)创建一个顺序栈myStack,首先依次向栈压入数据元素1,2,...,10,然后依次输出堆栈中的数据元素并显示。

#include "stdio.h"
#include "malloc.h"
 
typedef int ElemType;
//顺序栈结构体定义
#define  MaxStackSize  100
typedef struct Stack
{
    ElemType  stack[MaxStackSize];
    int  top;
}Stack;
//初始化
void InitStack(Stack *S)
{
   S->top =0;         //
}
//判栈栈S是否为空
int  StackEmpty( Stack S )
{
  if(S.top == 0)
      return 1;
  else
      return 0;
}
//入栈
void StackPush(Stack *S, ElemType elem)
{
    if(S->top == MaxStackSize-1 )
    {
    printf("栈满");                   //
    }
   else
    {
      S->stack[S->top++]=elem;    //
   }
}
//出栈
void StackPop( Stack *S,ElemType *elem )
{
  if(StackEmpty(*S))
  {
   printf("栈空");
  }
  else
   {
    *elem=S->stack[--S->top];     //
                 
   }
}
//获取栈顶元素内容
void GetTop( Stack S,ElemType *elem)
{
    if(StackEmpty(S))
    {
        printf("栈空");
    }
    else
    {
    *elem=S.stack[S.top-1];                  //
    }
}
int main()
{
    Stack myStack;
    int i,x;
    InitStack(&myStack);
    for(i=0;i<10;i++)
    {
        StackPush(&myStack,i+1);
    }
    GetTop(myStack,&x);
    printf("当前栈顶数据元素为:%d\n",x);
    printf("依次出栈的数据元素序列如下:\n");
    while(!StackEmpty(myStack))
    {
        StackPop(&myStack,&x);
        printf("%d   ",x);
    }
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值