- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
;第二章?数据结构与算法;2.3 栈和队列;2.3.1 栈
2.3.1.1栈的定义
栈:限定只能在表的一端进行插入和删除的特殊的线性表
设栈s=(a1,a2,. . . ,ai,. . . ,an),
其中a1是栈底元素, an是栈顶元素。
;2.3.1 栈
2.3.1.1栈的定义
栈:限定只能在表的一端进行插入和删除的特殊的线性表
设栈s=(a1,a2,. . . ,ai,. . . ,an),
其中a1是栈底元素, an是栈顶元素。
栈顶(top):允许插入和删除的一端;
约定top始终指向新数据元素将存放的位置。
栈底(bottom):不允许插入和删除的一端。;栈中的运算:1.设置空栈 ; 2. 插入一个新的栈顶元素
3. 删除栈顶元素; 4. 读取栈顶元素 。 ;2.3.1.2栈的存储结构
顺序栈、链栈;· 进栈算法
#define statcksize 100
int push(int s[ ], int x, int *ptop);出栈算法:
int pop(int s[ ], int *ptop, int *py); x;进栈算法
int lpush(Lstack s, int e)
{
p=(Lstack)malloc(sizeof(lnode));
p-data=e;
p-next=s;
s=p;
return (1);
}
;进栈算法
int lpush(Lstack s, int e)
{
p=(Lstack)malloc(sizeof(lnode));
p-data=e;
p-next=s;
s=p;
return (1);
}
;进栈算法
int lpush(Lstack s, int e)
{
p=(Lstack)malloc(sizeof(lnode));
p-data=e;
p-next=s;
s=p;
return (1);
}
;进栈算法
int lpush(Lstack s, int e)
{
p=(Lstack)malloc(sizeof(lnode));
p-data=e;
p-next=s;
s=p;
return (1);
}
;进栈算法
int lpush(Lstack s, int e)
{
p=(Lstack)malloc(sizeof(lnode));
p-data=e;
p-next=s;
s=p;
return (1);
}
;r; (2)?? ?递归算法: ;函数的递归调用;int f1(x)
int x;
{ int y,z;
…..
z=f2( y);
……
return (2*z); };特点
是无终止的递归调用,因此,应该给定一个限制递归次数的条件。; float fac ( int n)
{
float f;
if(n0) printf(“n0,data error!\n”);
else if(n= =0||n= =1) f=1;
else f=fac(n-1)* n ;
return f;
};以求4的阶乘为例:;利用栈实现递归调用;递归的执行情况分析 ;运算符: ** / * + - ( ) 界限符: ;;A*B + C/D;;输入:表达式符号序列;Push (OS, “;” , top2);
t=0; //表示扫描下一个符号
while (t 2)
{ IF t==0 THEN read W;;4、 地图四染色问题
“四染色”定理是计算机科学中著名的定理之一。
使地图中相邻的国家或行政区域不重色,最少可用四种颜色对地图着色。
证明此定理的结论,利用栈采用回溯法对地图着色。
思想:对每个行政区编号:1-7
对颜色编号;a、b、c、d;
从第一号行政区开始逐一染色,每一个区域逐次用四种颜色进行试探,若所取颜色与周围不重,则用栈记下来该区域的色数,否则依次用下一色数进行试探。若出现a-d均与周围发生重色,则需退栈回溯,修改当前栈顶的色数。; 0;;Void mapcolor(int R[][],int n,int s[])
{ s[1]=1; // 1号区域染1色
I=2; J=1; // I为区域号,J为染色号
while ( I=n)
{ while(( J=4)(I=n))
您可能关注的文档
最近下载
- 公司员工奖惩管理办法.docx VIP
- 清华阎石《数字电子技术基础》教学课件第四章.ppt VIP
- 部编人教版5年级上册语文全册教学课件(2022年12月修订).pptx
- 2025年秋学期冀教版初中数学九年级上册教学进度表.docx VIP
- 联想笔记本电脑V14 G1 Ideapad 14sIML系列产品3C认证证书.pdf VIP
- 易班优课华理新生入学教育《华东理工大学2020级学生手册》考试试题及答案.pdf VIP
- 公司奖惩管理规定4篇.docx VIP
- 健康管理学概论.pptx VIP
- 厚朴药材简介.ppt VIP
- 完整版:美制螺纹尺寸对照表(牙数、牙高、螺距、小径、中径外径、钻孔).docx VIP
文档评论(0)