- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构教学指南 课程性质和任务 本课程是计算机专业的主要专业基础课程之一。本课程的参考教学时数为70学时,其主要内容包括线性表、栈、队、链表、串、树和图的结构,以及查找和排序技术。通过本课程的教学,使学生理解计算机软件系统所必须的数据结构及算法的内部逻辑,掌握在软件工程中大量存在的查找和排序技术,并通过大量的上机实习,实现各种数据结构的算法,以便为后续课程的学习提供专业基础知识和增强学生编制、高度程序的能力。 通过本课程的学习,应达到以下目标: 1. 深刻理解数据结构中线性表、栈、队和链的概念、算法及其基本应用。 2. 理解树的基本概念,学会建立二叉树,并在二叉树上进行查找、插入和删除等各种运算。 3. 理解图和串的基本结构和算法,了解图的路径问题。 4. 熟练掌握几种重要的内部排序和查找技术,了解外部排序的一般过程。 5. 理解几种特殊链表的结构并初步掌握其算法的一般实际应用。 6. 能熟练地运用C语言,准确、清晰地编制与本课程有关的算法,并能上机调试通过。 第3章 栈、队列和串 ● 3.1 栈及其应用 ● 3.1.1 栈的基本操作 ● 3.1.2 栈的存储结构 ● 3.1.3 栈的应用举例 ● 3.2 队列及其应用 ● 3.2.1 队列的基本操作 ● 3.2.2 队列的存储结构 ● 3.2.3 循环队列 ● 3.2.4 队列的应用 ● 3.3 串 ● 3.3.1 串的概念 ● 3.3.2 串的基本操作 ● 3.3.3 串的存储结构 ● 3.3.4 串的模式匹配算法 ● 3.3.5 串的应用举例 ● 3.1 栈及其应用 ● 3.1.1 栈的基本操作 ※栈的定义 栈(Stack)是限定只能在表尾进行插入和删除数据元素的线性表。对栈而言,表尾端有其特殊含义,称为栈顶(top)。由于只允许在栈顶进行插入和删除操作,所以栈的操作是按“后进先出”的原则进行的。因此,栈又称为后进先出(Last In First Out,缩写为LIFO)表。示意图见下页。 ※ 栈的常用运算 (1)置空栈 建立一个空栈,准备存放数据; (2)进栈 在栈顶插入一个新元素; (3)出栈 从栈顶弹出(即删除)一个元素; (4)取栈顶元素 从栈顶取数据使用; (5)栈空判断 判断栈是否为空。 ● 3.1.2 栈的存储结构 ※ 顺序存储结构 栈的顺序存储结构,即用数组存储栈中的数据元素,简称顺序栈。实际上就是利用一组地址连续的存储单元,依次存放自栈底到栈顶的元素,同时附设一变量top指示栈顶元素在栈中的位置。习惯上,以top=-1表示栈空;top=N-1表示栈满。 ※顺序存储结构的优缺点 (1)优点是用任何语言处理都比较方便; (2)缺点是数组的大小是固定的,而栈本身是变动的。如果进出栈的数据量无法确定,就很难确定数组的大小。若数组定义得太大容易造成内存空间的浪费,定义得太小就会造成栈不够使用。 ※顺序栈的C语言类型说明 #define Maxsize /*表示栈的最大容量*/ {elementtype elements[Maxsize]; /* elementtype指栈中数据元素的类型 可以是int,char等任意类型*/ int top; } /*top为全局变量,表示栈顶指针*/ ※实现栈运算的函数 (3)出栈运算 从栈s的栈顶弹出一个元素到x,弹出成功返回0,否则返回-1。 函数如下: (4)取栈顶元素 从栈s中取栈顶元素到x使用,指针top不变,成功则返回取出的栈顶元素,否则给出相应信息。 函数如下: (5)栈空判断 判断栈s是否为空,若为空,返回1,否则返回0。 函数如下: 2 栈的链式存储结构 ※链式存储结构 链式存储结构,即用链表存储栈中的数据元素,简称链栈。它实际上是运算受限制的单链表,其插入和删除操作仅限于在表头的位置上进行。一个链栈可由链表的头指针唯一确定。 ※链式存储结构的优缺点 (1)优点是链栈空间的申请是动态的,可以随时改变链表的长度。这样不但不会出现用静态数组表示时存在的问题,而且还可以更有效的利用内存资源。 (2)缺点是处理起来比较复杂。 ※链栈的类型定义: struct node {elementtype data; /* elementtype
您可能关注的文档
最近下载
- 《七巧板》完整版教学课件.pptx VIP
- 定时交通灯控制设计.pdf VIP
- 浙大中控DCS系统操作规程.doc VIP
- 学校家长安全责任书.docx VIP
- 北师大版小学数学六年级上册第二单元 分数混合运算 基础测试题.doc VIP
- 2025至2030中国食用油行业运营态势与投资前景调查研究报告.docx VIP
- 10.3 合同的变更、转让、解除和终止(政策与法律法规 第7版).pptx VIP
- 儿童肺炎支原体肺炎诊疗指南2025年版解读PPT课件.pptx VIP
- 深圳初一数学下学期期中模拟测试题(带答案).pdf VIP
- 2023年春国开(甘肃)《个人理财》形考任务1-4题库.docx
文档评论(0)