- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1. 定义;3.1 栈;例1 一个栈的输入序列为1,2,3,若在入栈的过程中允许出栈,则可能得到的出栈序列是什么?;例2:一个栈的输入序列是12345,若在入栈的过程中允许出栈,则栈的输出序列43512可能实现吗?12345的输出呢?;例3:;Q1:堆栈是什么?它与一般线性表有什么不同?;栈的基本运算 :
InitStack(s) 初始化操作,初始化为空栈s 。
IsEmpty(s) 判断栈空函数。如果s是空栈,返回“true”,否则返回“false”。
IsFull(s) 判断栈满函数。主要应用在顺序存储结构中,如果s栈满,返回“true”,否则返回“false”。
Push(s,x) 压栈操作。将元素x插入到栈s中,并使x成为新的栈顶元素。
Pop(s) 出栈函数。如果栈s非空,那么返回栈顶元素,并删除该栈顶元素,否则返回空值NULL。
GetTop(s) 获取栈顶元素。如果栈s非空,那么返回值为栈顶元素,否则返回空值NULL。;栈有两种存储结构:顺序存储结构和链式存储结构。
3.1.2 栈的顺序存储结构
顺序栈:顺序存储结构的栈。
顺序栈:用一组连续的存储单元存放自栈底到栈顶的数据元素,一般用一维数组表示
栈顶指针:指示栈顶位置
;顺序栈类型:
#define StackSize 100 /*顺序栈的初始分配空间*/
typedef struct sqst
{
DataType data[StackSize]; /*保存栈中元素*/
int top; /*栈指针*/
} SeqStack;
顺序栈被定义为一个结构体类型,有两个域:data和top。
data为一维数组,存储栈中元素,DataType为栈元素的数据类型,可以根据需要而指定为某种具体的类型。
top为int型,它的实际取值范围为0~StackSize-1。
top=-l表示栈空;top=StackSize-1表示栈满。
栈的长度:栈顶指针+1; a1;栈不存在的条件: base=NULL;
栈为空 的条件 : base=top;
栈满的条件 : top-base=stacksize;;若入栈动作使地址向高端增长,称为“向上生成”的栈;
若入栈动作使地址向低端增长,称为“向下生成”的栈;
对于向上生成的堆栈:
入栈口诀:堆栈指针top “先压后加” : S[top++]=an+1
出栈口诀:堆栈指针top “先减后弹” : e=S[--top];Q4:为什么要设计堆栈?它有什么独特用途?;编制递归算法:;顺序栈的入栈操作——例如用堆栈存放(A,B,C,D);顺序栈出栈操作——例如从栈中取出‘B’;3.1.3 栈的链式存储结构;栈的基本运算算法: ;(2) 判断栈空运算
功能:若栈为空则返回值1,否则返 回值0。
int StackEmpty(LinkStack *ls)
{
if(ls-next==NULL)
return 1;
else
return 0;
}; (3) 进栈运算
void Push(LinkStack *ls, DataType x)
{ LinkStack *p;
p=(LinkStack*)malloc(Sizeof(LinkStack));
p-data=x;
p-next=ls-next;
ls-next=p;
};(4)出栈运算
功能: 将栈顶结点的data域值赋给x, 然后删除该栈顶结点。
int Pop(LinkStack *ls,DataType x)
{
LinkStack *p;
if(ls-next==NULL) /*栈空,下溢出*/
return 0;
else
{ p=ls-next;
x=p-data;
ls-next=p-next;
free(p);
return 1; }
};(5)取栈顶元素运算算法
功能:将栈顶结点的data域值赋给x。
int GetTop(LinkStack *ls, DataType x)
{
if(ls-next==NULL) /*栈空,下溢出*/
return 0;
else
{
x=ls
文档评论(0)