- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构3栈选编
3.1 堆栈
3.2 堆栈的应用
3.3 队列
3.4 队列的应用 ;3.1 堆栈 ( Stack );3.1.1 堆栈的基本概念;相关术语;数据元素:
堆栈的数据集合可表示为a0,a1…an-1,每个元素的类型:DataType
关系:数据元素之间为线性关系.
操作集合:
1、初始化: InitStack(S)
操作前提: S为未初始化的栈。
操作结果: 将S初始化为空栈。
2. 判栈是否非空: IsNotEmpty(S)
操作前提:栈S已经存在。
操作结果:判栈非空函数,若S为空栈,则函数值为0,否则为1。;3、进栈: Push(S,x)
操作前提:栈S已经存在。
操作结果:在S的顶部插入元素x;若S栈未满,将x插入栈顶位置,若栈已满,则返回FALSE,表示操作失败,否则返回TRUE。
4、退栈:Pop(S, x)
操作前提:栈S已经存在。
操作结果:删除栈S的顶部元素,并用x带回该值;若栈为空,返回值为FALSE,表示操作失败,否则返回TRUE。
5、取栈顶元素:GetTop(S,x)
操作前提:栈S已经存在。
操作结果:取栈S的顶部元素。返回栈顶元素。;3.1.3.顺序栈及操作;typedef int DataType;
#define MaxSize 64
typedef struct {
DataType stack[MaxSize];
int top;
}SeqStack; ;;进栈过程示例;退栈过程示例;(1).初始化
InitStack(SeqStack *s)
{
s-top=-1;
}
;Int PushStack(SeqStack *s,DataType x)
{
if (s-top==MaxSize-1)
{ printf(“overflow\n”);return (FALSE);}
else
{ s-top++;
s-stack[s-top]=x;
}
return (TRUE);
};int PopStack(SeqStack *s,Datatype *x)
{
if (s-top0)
{ printf(“underflow\n”); return (FALSE);
}
else
{*x= s-stack[s-top];
s-top--;
return(TRUE);
}
};DataType TopStack(SeqStack *s)
{if (s-top0)
{printf(“underflow\n”);
return 0;
}
else return(s-stack[s-top]);
};堆栈算法练习; 最常用的是两个栈的共享技术:它主要利用了栈“栈底位置不变,而栈顶位置动态变化”的特性。双端栈
目的:节省空间;两栈共享数据结构定义:;初始化算法;a0;int PushDqstack(DqStack*s,char WhichStack,DataType x)
{if (s-Top[0]= s-Top[1]-1)
{printf(“栈满”);
return 0;}
if (WhichStack!=‘L’ WhichStack !=‘R’)
{printf(“出错”);
return 0;}
if (WhichStack==‘L’) s-stack[++s-Top[0]]=x;
else s-stack[--s-Top[1]]=x;
return 1;
} ;共用堆栈的出栈算法:;1.栈的链接表示 — 链式栈;2.链栈的结点定义;top;int PushStack(LSNode *top, DataType x)
{ LSNode *p;
if ((p=malloc(sizeof(LSNode)))==NULL
{printf(“\n失败”); return 0;}
p-data=x;
p-next=top-next;
top-next=p;
return 1;
};DataType PopStack(LSNode *top)
{ LSNode *p;
DataType datap;
p=top-next;
if (p==NULL)
{printf(“under flow\n”); retur
您可能关注的文档
最近下载
- 2025江苏南京农业大学新校区建设指挥部、基本建设处人员招聘10人考试备考试题及答案解析.docx VIP
- 河阴死者墓志义例与北魏后期墓志制作.doc VIP
- 2025江苏南京农业大学新校区建设指挥部、基本建设处人员招聘10人考试模拟试题及答案解析.docx VIP
- 2025-2026学年西师大版小学数学四年级上册教学计划及进度表.docx
- 2025江苏南京农业大学新校区建设指挥部、基本建设处人员招聘10人笔试备考题库及答案解析.docx VIP
- 2025江苏南京农业大学新校区建设指挥部、基本建设处人员招聘10人考试备考题库及答案解析.docx VIP
- 中国低空经济应用场景研究报告(2025).pptx VIP
- 科技英语语法篇 .pptx VIP
- 石文操作手册.pdf VIP
- 二零二五年度军队后勤保障中心部队食堂食材供应合同.docx VIP
文档评论(0)