- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
栈与队列是两种特殊的线性表
逻辑结构: 线性
操作运算:限制在表的端点进行;一、栈(stack);;;栈的运算:
1) 置空栈:将栈置为空栈//初始化
void set_stacknull(stack_type *s) { s-top = -1;
};3) 判空栈:
若栈为空,则返回值“真”,否则返回值“假”
#define true 1 #define false 0 int empty(stack_type *s){ if(s-top0) return(true); else return(false);
};4) 入栈push:
插入(压入)数据元素到栈顶
分析:
新元素入栈,栈顶上移,新元素放在栈顶
top = top+1; data[top] = x;
边界问题:是否会溢出?(上溢问题)
实现:;#define true 1
#define false 0
int push(stack_type *s, elemtype x)
{
if(s-top = MAXNUM-1) return(false); else{ s-top = s-top+1; s-data[s-top] = x; return(true); }
};5) 出栈pop:
若栈不为空,则删除(弹出)栈顶元素
分析:
栈顶元素弹出,栈顶下移
out = data[top]; top = top-1;
边界问题:是否会溢出?(下溢问题)
实现:;elemtype pop(stack_type *s)
{
elemtype out; if(s-top 0) return(0); else{ out = s-data[s-top]; s-top = s-top-1; return(out); }
};3、用链表实现的链栈
采用链式存储结构,用指针指示数据元素。;结点的类型定义:
typedef struct node{
elemtype data;
struct node *next;
}node_type;;链栈的运算:;2) 出栈pop:
判断栈是否为空
弹出栈顶元素:
读出栈顶元素的值
修改栈顶指针
释放原栈顶元素结点占用的空间;elemtype pop(lstack_type *lp){ node_type *p; elemtype x; if(lp-top==NULL){ printf(“stack is underflow”); return(0); } else{ x = lp-top-data; p = lp-top; lp-top = lp-top-next; free(p); return(x); } };3) 置空栈:将栈置为空栈
逐个释放原栈中所???结点所占的存储空间
void clean_stack(lstack_type *lp)
{ node_type *temp; while((lp-top) != NULL)
{ temp = lp-top; lp-top = lp-top-next; free(temp);
}
};proc1( ){
… proc2( ); …
};二、队列(queue);特点:① 插入、删除分别在表的不同端进行
队头:允许删除元素的端
队尾:允许插入元素的端
② 遵循“先进先出”原则——FIFO;;顺序队列的类型定义:
typedef struct{
elemtype data[MAXNUM+1];
int front;
int rear;
}queue_type;;顺序队列的运算:
1)入队操作:
int enqueue(queue_type *q, elemtype x){
if(q-rear =
您可能关注的文档
最近下载
- 部编版小学语文四年级上册教学设计(全册新教材).docx VIP
- 环境工程设计-水泥厂除尘.doc VIP
- 智慧树知到《创新创业与管理基础(东南大学)》章节测试答案.docx VIP
- 2022年甘肃省兰州市中考英语一诊试卷(含解析).docx VIP
- 大学生职业生涯规划模板-舞蹈表演 完整版.docx VIP
- 乐陵市市直医院招聘考试题库.pdf VIP
- 大学生职业生涯规划.pdf VIP
- 第四单元:百分数、分数、小数、比综合转化专项练习(学生版+解析)-2024-2025学年六年级数学上册培优精练(北师大版).docx VIP
- 2024现代化数字灌区建设技术指南.pdf VIP
- 京东直通车售前客服岗位人才认证(初阶)考试答案,JD自营初级售前客服精品.pdf VIP
原创力文档


文档评论(0)