- 1、本文档共73页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章 常用数据结构及其运算1
第2章 常用数据结构及其运算 石油工程学院 数据处理是指对数据集合中各元素以各种方式进行运算,包括插入、删除、查找、更改、分析。 数据处理效率指的是: (1)数据处理速度; (2)数据处理过程中占用的计算机存储空间 数据处理的关键问题是: 合理组织大量数据元素在计算机中的存储关系,以提高数据处理效率,节省计算机存储空间。 (1) 顺序表初始化 该操作的实现非常简单,只需将表示顺序表长度的变量len置为0即可。以下算法对 顺序表进行初始化,并返回顺序表的长度一返回值即为顺序表的长度0。 Int Init(datatype v[LENGTH] { return 0; } 假设线性表的存储空间为V(0:m-1),长度为n(n≤m),插入的位置为i(i表示在第i个元素之前插入),插入的新元素是b,插入过程如下: 首先处理3种异常情况: a.当存储空间已满(n=m)时为上溢错误,不能进行插入,算法结束; b.当in时,认为在最后一个元素之前插入; c.当i1时,认为在第1个元素之前插入。 从最后一个元素开始,直到第i个元素,每一个元素均往后移动一个位置。 最后将新元素插入到第i个位置,并将线性表的长度增加1. 假设线性表的存储空间为V(0:m-1),长度为n(n≤m),删除的位置为i(i表示删除第i个元素),删除过程如下: (1)首先处理2种异常情况: a.当线性表为空(LEN=0)时上溢错误,不能进行删除,算法结束; b.当i0 或in-1时,线性表中没有相应元素,算法结束; (2)从i+1个元素开始,直到最后一个元素,每一个元素均依次 往前移动一个位置。 (3)最后将线性表的长度减小1. 表达式求值(运算符的优先级问题) 过程的嵌套与递归调用(Fibonacci序列,汉诺塔问题) 回溯求解算法(背包问题,八皇后问题) … 计算机处理表达式步骤: (1)处理前,首先设置两个栈: ①运算符栈,在表达式处理过程中存放运算符。开始时,运算符 栈中先压入一个表达式结束符“;”。 ②操作数栈,用于在表达式处理过程中存放操作数。 (2)从左到右依次读出表达式中的各个符号(运算符或操作数),每读出一个符号按以下原则进行处理: ①若读出的是操作数,则将其压入操作数栈,并依次读下一个符号; ②若读出的是运算符,则作进一步判断: a.若读出运算符的优先级大于运算符栈栈顶运算符的优先级,则将读出的运算符压入运算符栈,并依次读下一个符号; b.若读出的是表达式结束符“;”,且运算符栈栈顶的运算符也是表达式结束符“;”,则表达式处理结束,最后的计算结果在操作数站的栈顶位置; c.若读出运算符的优先级不大于运算符栈栈顶运算符的优先级,则从操作数栈连续退出两个操作数,并从运算符栈退出一个运算符,然后作相应的运算,并将运算结果压入操作数栈。在这种情况下,当前读出的运算符下次将重新考虑(不再度下一个符号)。 例表达式:A+B*C-D/E; struct 结构体类型名 { 数据成员表; 结构体类型名 *指针变量名; }; next data 数据域 指针域 (1) 线性链表定义 在线性链表中,各数据元素之间的前后件关系是由各节点的指针域来指示的。指向第一个结点的指针head称为头指针,当head=NULL(或0)时称为空表。 结点C语言描述: struct list { int num; int score; struct list *next; }; typedef struct list LIST; (2)线性链表的初始化 初始化线性链表实际上就是用线性链表存储一个空的线性表。 对于单链表来说,只需要将头指针head置为空(NULL)即可。 LIST * init( ) { LIST *s; s=NULL; } (3) 线性链表插入运算 由线性链表的存储结构可知,对线性链表进行插入、删除操作时,不必移动元素,而是修改指针的指向和动态生成或回收链表的结点。 后插:当前指针指向第i个结点ai,将值为x的新结点插入到第i个结点之后。首先生成一个数据域为x的新结点*s,并令结点ai的指针域指向新结点,新结点的指针域指向结点ai+1。从而实现三个结点ai,x和ai+1之间的逻辑关系的变化。 a i a i+1 ? ? ? x ? ? ? ne
您可能关注的文档
- 第三章习题和直流电路复习.ppt
- 把严换届纪律关 做好镇换届工作.doc
- 如何用ghost备份还原系统.doc
- 我心目中的好老师策划书.doc
- 九年级物理期末训练.doc
- 激光原理 4-5-1.ppt
- 农村食品安全问题3.doc
- 慢性前列腺炎患者的健身体操.doc
- 专利申请交底材料(附指示函)电子版.doc
- 6资助伴我成长.doc
- 小学科学:ESP8266智能插座电路原理与动手实践研究教学研究课题报告.docx
- 《金融开放浪潮下我国多层次监管体系构建与创新研究》教学研究课题报告.docx
- 区域教育质量监测中人工智能应用的数据质量分析与优化策略教学研究课题报告.docx
- 《金融科技监管中的数据治理与合规性要求》教学研究课题报告.docx
- 《3D打印技术在航空航天领域中的多材料制造与复合材料应用》教学研究课题报告.docx
- 《绿色金融发展中的政府职能与市场机制研究》教学研究课题报告.docx
- 《植物工厂多层立体栽培光环境调控技术对植物生长发育节律的调控机制探讨》教学研究课题报告.docx
- 销售团队年度业绩总结.docx
- 银行风险管理与金融危机防范.docx
- 银行网络攻击预警与快速响应机制.docx
文档评论(0)