欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

栈Stack的数组实现

程序员文章站 2022-03-29 23:27:23
...

Jungle用一个数组来实现栈以及栈的基本操作(入栈、出栈、是否为空、是否已满、打印)。
栈的所有功能和定义放在一个头文件里Static_Array_Stack.h

#ifndef STATIC_ARRAY_ATACK_H
#define STATIC_ARRAY_ATACK_H

///栈里最大元素数量
#define MAX_SIZE 5

typedef struct STACK
{
    int data;
    struct STACK* next;
}Stack;

Stack stack[MAX_SIZE];
///栈顶指针
int top_pointer = -1;

bool isEmpty()
{
    return top_pointer==-1;
}

bool isFull()
{
    return top_pointer == MAX_SIZE-1;
}

void pop()
{
    if(isEmpty())
    {
        printf("The stack if Empty!\n");
        return;
    }
    printf("%d:%d",top_pointer,stack[top_pointer]);
    top_pointer--;
}

void push(int iData)
{
    if(isFull())
    {
        printf("The stack if Full!\n");
        return;
    }
    top_pointer++;
    stack[top_pointer].data = iData;
    stack[top_pointer].next = NULL;
}

void printStack()
{
    if(isEmpty())
    {
        printf("Stack is Empty!");
        return;
    }
    for(int i=top_pointer;i>-1;i--)
        printf("%d:%d\n",i,stack[i].data);
}
#endif //STATIC_ARRAY_ATACK_H

在主程序里测试一下:

#include <stdlib.h>
#include <stdio.h>
#include "Static_Array_Stack.h"

int main()
{
    int num=0;

    int choice=0;
    while(choice!=6)
    {
        printf("请选择:\n\t1-是否为空栈\n\t2-栈是否已满\n\t3-入栈(push)\n\t4-出栈(Pop)\n\t5-打印\n\t6-退出\n");
        scanf("%d",&choice);
        switch(choice)
        {
        case 1:
            if(isEmpty())
                printf("栈为空栈!\n");
            else
                printf("不是空栈!\n");
            break;
        case 2:
            if(isFull())
                printf("栈已满!\n");
            else
                printf("栈未满!\n");
            break;
        case 3:
            int num;
            printf("请输入入栈元素值:");
            scanf("%d",&num);
            push(num);
            break;
        case 4:
            pop();
            break;
        case 5:
            printStack();
            break;
        }
    }
    return 0;
}

测试一下
栈Stack的数组实现

相关标签: