**
顺序栈
**
顺序栈的定义:顺序栈是用顺序存储结构实现的栈。类似于顺序表的定义,即栈中的数据元素利用一组地址连续的存储单元来一次存放。用一个整型变量top来指示当前栈顶的位置
顺序栈的定义类型
#define Max 20
typedef int elemtype;
//顺序栈
typedef struct SequenStack
{
elemtype data[Max];//定义顺序栈为一位数组
elemtype top;//栈顶指针
//top总是指向栈中最后一个元素的位置
}SequenStack;
栈的初始化
SequenStack* Init_SequenStack()
{
SequenStack* S = (SequenStack*)malloc(sizeof(SequenStack));
if (S == NULL)
{
return S;
}
S->top = -1;
return S;
}
入栈
bool Push_SequenStack(SequenStack* S,elemtype e)
{
if (S->top == Max - 1)//判断栈是否已满
{
printf("栈已经满了\n");
return false;
}
S->top++;
S->data[S->top] = e;
return true;
}
出栈
bool Pop_SequenStack(SequenStack* S, elemtype e)
{
if (S->top == -1)//判断栈是否为空,为空,则不能出栈
{
return false;
}
S->top--;//栈顶指针回退一个
return true;
}
main函数
int main()
{
SequenStack* S;
S = Init_SequenStack();
return 0;
}
总程序
#include<stdio.h>
#include<malloc.h>
#define Max 20
typedef int elemtype;
//顺序栈
typedef struct SequenStack
{
elemtype data[Max];//定义顺序栈为一位数组
elemtype top;//栈顶指针
}SequenStack;
//顺序栈初始化
SequenStack* Init_SequenStack()
{
SequenStack* S = (SequenStack*)malloc(sizeof(SequenStack));
if (S == NULL)
{
return S;
}
S->top = -1;
return S;
}
//入栈
bool Push_SequenStack(SequenStack* S,elemtype e)
{
if (S->top == Max - 1)//判断栈是否已满
{
printf("栈已经满了\n");
return false;
}
S->top++;
S->data[S->top] = e;
return true;
}
//出栈
bool Pop_SequenStack(SequenStack* S, elemtype e)
{
if (S->top == -1)//判断栈是否为空,为空,则不能出栈
{
return false;
}
S->top--;//栈顶指针回退一个
return true;
}
int main()
{
SequenStack* S;
S = Init_SequenStack();
return 0;
}
------------甜辣椒------------------------------------------------------------