一.定义:栈是允许在同一端进行插入和删除操作的特殊线性表。
创新互联建站主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、成都响应式网站建设、程序开发、网站优化、微网站、成都微信小程序等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的网站制作、成都网站设计、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);
栈底固定,而栈顶浮动;
栈中元素个数为零时称为空栈
二.原理:后进先出
三.栈的基本操作
(1)SETNULL(s){置空栈}:将栈S置成空栈
(2)EMPTY(s){判空栈}:这是一个布尔函。若栈S为空栈,则返回值“真”,否则返回值“假”
(3)PUSH(s,x){进栈}:在栈S的顶部插入(亦称压入)元素x
(4)POP(s){出栈}:若栈S不空,则删除(亦称弹出)顶部元素
(5)POP(s){出栈顶}:取栈顶元素,并不改变栈中内容
四.栈的C语言实现
以下文件存为Seqstack.h
#include#define StackSize 100
typedef int DataType;
typedef struct
{
DataType stack[StackSize];
int top;
}SeqStack;
void InitStack(SeqStack *s)
{
s->top=0;
}
int StackEmpty(SeqStack s)
{
if(s.top==0)
return 1;
else
return 0;
}
int GetTop(SeqStack s,DataType *e)
{
if(s.top<=0)
{
printf("栈已空");
return 0;
}
else
*e=s.stack[s.top-1];
return 1;
}
int PushStack(SeqStack *s,DataType e)
{
if(s->top==StackSize)
{
printf("栈已满,无法进栈");
return 0;
}
else
{
s->stack[s->top]=e;
s->top++;
return 1;
}
}
int PopStack(SeqStack *s,DataType *e)
{
if(s->top==0)
{
printf("栈已空,不能出栈");
return 0;
}
else
{
s->top--;
*e=s->stack[s->top];
return 1;
}
}
int StackLength(SeqStack *s)
{
return s->top;
}
void ClearStack(SeqStack *s)
{
s->top=0;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧