栈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;
}
测试一下
上一篇: 如何在本地进行API接口测试
下一篇: float是什么?float属性详解