基本数据结构实现—栈

 

 

 

 

 

 

 

 

 

 

 

 

//----------------------------------//
//      数据结构实现——栈
//
//  用 数组 实现
//
//----------------------------------//
#include <iostream>
using namespace std;

#define MAXSIZE 100

typedef struct {
    int data[MAXSIZE];
    int topIdx;
} Stack;
Stack *InitStack()
{
    Stack *p = NULL;
    p = (Stack *)malloc(sizeof(Stack));
    if (p == NULL) {
        return NULL;
    }
    p->topIdx = 0;
    return p;
}
void FreeStack(Stack *s)
{
    if (s != NULL) {
        free(s);
        s = NULL;
    }
}
bool IsStackEmpty(Stack *s)
{
    if (s->topIdx == 0) {
        return true;
    }
    return false;
}
bool IsStackFull(Stack *s)
{
    if (s->topIdx == MAXSIZE) {
        return true;
    }
    return false;
}
bool PushStack(Stack *s, int data)
{
    if (IsStackFull(s)) {
        return false;
    }
    s->data[s->topIdx++] = data;
    return true;
}

bool PopStack(Stack *s, int *data)
{
    if (IsStackEmpty(s)) {
        return false;
    }
    *data = s->data[--s->topIdx];
    return true;
}

bool TopStack(Stack *s, int *data)
{
    if (IsStackEmpty(s)) {
        return false;
    }
    *data = s->data[s->topIdx - 1];
    return true;
}

void main() {
    Stack *s = InitStack();
    int data;
    IsStackEmpty(s);
    IsStackFull(s);
    PushStack(s, 1);
    PopStack(s, &data);
    TopStack(s, &data);
    FreeStack(s);
}

 栈 的 链表 实现 可参考:

https://www.cnblogs.com/bokeyuan-dlam/articles/12192638.html

posted @ 2020-01-14 14:28  博客园—哆啦A梦  阅读(20)  评论(0)    收藏  举报