栈的创建与操作
主要包括创建栈,以及入栈,出栈,判断栈空和栈满等基本操作。遵循先进后出,后进先出原则。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAXSIZE 5
#define ERROR -1
#define OK 0
1.首先定义结构体,包括栈顶指针(这里的指针并非真正意义上的指针,只是一个变量,起到标记位置的作用)和放置元素的数组。
struct Stack
{
int data[MAXSIZE];
int top;
};
2.创建栈,将栈顶指针置为-1。
void CreateStack(Stack &S)
{
S.top=-1;
}
3.判断栈空和栈满
int Isempty(Stack& S) //判断栈空
{
return S.top == -1;
}
int Isfull(Stack& S) //判断栈满
{
return S.top == MAXSIZE - 1;
}
4.进行出栈和入栈操作
int Push(Stack& S,int element)//入栈操作
{
if (S.top == MAXSIZE - 1)
{
printf("栈满\n");
return ERROR;
}
S.top++;
S.data[S.top] = element;
return S.top;
}
int Pop(Stack& S) //出栈操作
{
if (S.top == -1)
{
printf("栈空\n");
return ERROR;
}
else
{
int t = S.data[S.top];
S.top--;
return t;
}
}
5.源代码如下
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define MAXSIZE 5
#define ERROR -1
#define OK 0
struct Stack
{
int data[MAXSIZE];
int top;
};
void CreateStack(Stack &S)
{
S.top=-1;
}
int Push(Stack& S,int element)
{
if (S.top == MAXSIZE - 1)
{
printf("栈满\n");
return ERROR;
}
S.top++;
S.data[S.top] = element;
return S.top;
}
int Pop(Stack& S)
{
if (S.top == -1)
{
printf("栈空\n");
return ERROR;
}
else
{
int t = S.data[S.top];
S.top--;
return t;
}
}
int Isempty(Stack& S)
{
return S.top == -1;
}
int Isfull(Stack& S)
{
return S.top == MAXSIZE - 1;
}
int main()
{
Stack S;
CreateStack(S);
int element;
while (!Isfull(S))
{
printf("Input element:");
scanf("%d", &element);
Push(S, element);
}
while (!Isempty(S))
{
printf("栈中的元素为:");
int temp = Pop(S);
printf("%d\n", temp);
}
return 0;
}
6.运行结果如图
//转载请标明出处,谢谢。