使用数组实现堆栈

原创 2017年09月13日 20:11:38
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 10
#define OK    1
#define ERROR 0
typedef int Status;
typedef int SElemType;
struct SqStack
{
    SElemType data[MAXSIZE];//数组实现堆栈
    int top;                //栈元素序号
};


Status push(struct SqStack *S, SElemType value)
{
    /*栈满*/
    if(S->top == MAXSIZE - 1)
    {
        return ERROR;
    }
    S->top++;
    S->data[S->top] = value;
    return OK;
}

Status pop(struct SqStack *S, SElemType *value)
{
    /*栈空*/
    if(S->top == -1)
        return ERROR;
    *value = S->data[S->top];
    S->top--;
    return OK;
}

int is_full(struct SqStack *S)
{
    return S->top == MAXSIZE- 1;
}

int is_empty(struct SqStack *S)
{
    return S->top == -1;
}

int main(void)
{
    struct SqStack *stack = (struct SqStack*)malloc(sizeof(struct SqStack));
    int i = 0;
    int value;
    stack->top = -1;//这句话很重要,不然会出错
    for(i=0; i<=10; i++)
    {
        if(is_full(stack))
        {
            printf("stack is full\n");
            break;
        }
        push(stack, i);
        printf("top is %d\n", stack->data[stack->top]);
    }

    for(i=0; i<=10; i++)
    {
        if(is_empty(stack))
        {
            printf("stack is empty\n");
            break;
        }
        pop(stack, &value);
        printf("%d pop\n", value);
    }
    return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 10
#define OK    1
#define ERROR 0
typedef int Status;
typedef int SElemType;
struct SqStack
{
    SElemType data[MAXSIZE];//数组实现堆栈
    int top;                //栈元素序号
};


Status push(struct SqStack *S, SElemType value)
{
    /*栈满*/
    if(S->top == MAXSIZE - 1)
    {
        return ERROR;
    }
    S->top++;
    S->data[S->top] = value;
    return OK;
}

Status pop(struct SqStack *S, SElemType *value)
{
    /*栈空*/
    if(S->top == -1)
        return ERROR;
    *value = S->data[S->top];
    S->top--;
    return OK;
}

int is_full(struct SqStack *S)
{
    return S->top == MAXSIZE- 1;
}

int is_empty(struct SqStack *S)
{
    return S->top == -1;
}

int main(void)
{
    struct SqStack *stack = (struct SqStack*)malloc(sizeof(struct SqStack));
    int i = 0;
    int value;
    stack->top = -1;//这句话很重要,不然会出错
    for(i=0; i<=10; i++)
    {
        if(is_full(stack))
        {
            printf("stack is full\n");
            break;
        }
        push(stack, i);
        printf("top is %d\n", stack->data[stack->top]);
    }

    for(i=0; i<=10; i++)
    {
        if(is_empty(stack))
        {
            printf("stack is empty\n");
            break;
        }
        pop(stack, &value);
        printf("%d pop\n", value);
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

用数组实现堆栈

stack.h#define STACK_TYPE char extern void push(STACK_TYPE value);extern void pop(void);extern STACK...
  • dingyuanpu
  • dingyuanpu
  • 2010年08月13日 13:38
  • 949

JS数组实现队列和堆栈

JS分别为队列和堆栈的实现提供了两个函数。 队列实现: shift() : 删除集合中第一个元素,并返回这个元素的值 unshift() :在集合开头添加新元素(一个或多个均可),并返回新的集合...
  • code_better
  • code_better
  • 2016年07月26日 20:27
  • 1046

使用java实现后进先出的堆栈功能【笔试题】

今天看到某公司的笔试题,题目如下: 1.      请编写代码实现Stack类,该类能够实现后进先出的堆栈功能,要求实现的方法包括: ------Stack(int) –实例化指定深度的栈 ----...
  • Abubu123
  • Abubu123
  • 2017年04月18日 17:03
  • 2273

数组模拟堆栈

需求:编写一个类使用数组模拟堆栈的存储方式。 堆栈存储特点: 先进后出,后进先出。注意: 不再使用的对象,应该不要让变量指向该对象,要让该对象尽快的被垃圾回收期回收。class StackList{...
  • zxiang248
  • zxiang248
  • 2016年07月04日 19:18
  • 452

PHP使用数组实现堆栈和队列

堆栈和队列是数据结构的两种实现形式,是使用非常广泛的存储数据的容器。下面呢,就分别讲下这两种容器在PHP中的应用: 一、使用数组实现堆栈:、 1、堆栈容器中,最后进栈的将会被最先出栈,即所谓的“先...
  • joyksk
  • joyksk
  • 2017年06月20日 11:59
  • 1577

数组实现堆栈操作

感觉自己数据结构学的好慢啊。 感觉用不惯C++的输入输出,其实看我胡扯不如直接去看代码来的实在。 堆栈的在于查看是否满(溢出),或者为空(NULL) 上代码: // // main.cpp ...
  • sdlwzzm19971226
  • sdlwzzm19971226
  • 2017年03月20日 16:14
  • 479

4-7 在一个数组中实现两个堆栈 (20分)

本题要求在一个数组中实现两个堆栈。 函数接口定义:Stack CreateStack( int MaxSize ); bool Push( Stack S, ElementType X, int ...
  • wanmeiwushang
  • wanmeiwushang
  • 2016年07月11日 19:12
  • 2634

在一个数组中实现两个堆栈

4-7 在一个数组中实现两个堆栈   (20分) 本题要求在一个数组中实现两个堆栈。 函数接口定义: Stack CreateStack( int MaxSize ); bool P...
  • ccDLlyy
  • ccDLlyy
  • 2016年09月24日 09:25
  • 1115

分别用数组和链表实现栈

1,堆栈ADT package Stack;public interface StackADT { public void push(Object element);//压栈 ...
  • mengzhejin
  • mengzhejin
  • 2014年07月15日 18:20
  • 970

数据结构与算法——在一个数组中实现两个堆栈(C语言)

要求在一个数组中实现两个堆栈。函数接口定义:Stack CreateStack( int MaxSize ); bool Push( Stack S, ElementType X, int Tag ...
  • aaa946231
  • aaa946231
  • 2016年01月24日 11:59
  • 752
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用数组实现堆栈
举报原因:
原因补充:

(最多只允许输入30个字)