- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构要讨论的问题 如何设计数据的组织方式 相同数据的不同表示形式 数据的不同表示导致了其实现的程序质量 一个问题求解质量和效率的高低更多地取决于对问题的描述与数据表示的形式,而不是施加于其上的操作。 本章内容 数据结构概述 线性表 栈 队列 数据结构概述 数据结构研究的内容 数据的逻辑结构 数据的存储结构 数据的运算 数据结构包含内容之一:数据的逻辑结构 数据结构包含内容之一:数据的逻辑结构 数据结构包含内容之一:数据的逻辑结构 数据结构包含内容之二:数据的存储结构 顺序方式 数据结构包含内容之三:数据的运算 线性表 线性表的顺序存储结构(顺序表) 线性表的顺序存储结构(顺序表) 顺序表类的定义 顺序表类的构造函数 顺序表类的Find( )函数 顺序表类的Search( )函数 插入 顺序表类的Insert()函数 删除 顺序表类的Delete( )函数 顺序表类的 Delitem( )函数 顺序表类的 Delitem( )函数 顺序表类的output( )函数 顺序表类的友元函数 链表(Linked List) 以链接方式存储的线性表称为链表。链表 是线性表的链接存储表示。 单链表 循环链表 双向链表 单链表 由一系列不必在内存中相连的存储单元存放线性表 中的数据元素。 单链表结构和结点的定义 不带头结点的单链表 单链表基本算法 头插法(前插法)建立单链表 从一个空表开始,重复读入数据: 生成新结点 将读入数据存放到新结点的数据域中 将该新结点插入到链表的前端 直到读入结束符为止。 尾插法(后插法)建立单链表 每次将新结点加在链表的表尾; 尾指针rear, 总是指向表中最后一个结点,新结点插在它的后面; 带表头结点的单链表的插入运算 q-next = p-next; p-next = q; q-next = p-next; p-next = q; 第一种情况:在第一个结点前插入 q-next = head ; head = q; 第三种情况:在链表末尾插入 q-next = p-next; p-next = q; 在单链表中删除ai结点 q = p-next; p-next = q-next; 单链表类的定义 单链表类的构造函数 单链表类的析构函数 单链表类的Find()函数 单链表类的Search()函数 字符型单链表类的Insert()函数 字符型单链表类的Delete( )函数 单链表类的ClearList( )函数 单链表类的output()函数 单链表类的友元函数 顺序表与链表的比较 基于时间的比较 存取方式 顺序表可以随机存取,也可以顺序存取 链表是顺序存取的 插入/删除时移动元素个数 顺序表平均需要移动近一半元素 链表不需要移动元素,只需要修改指针 思考? 如果希望存储线性表所用的空间大小与线性表长度的变化一致,则应采用什么存储方式?为什么? 练习 单链表类的Insertx( )函数 其他形式的链表 其他形式的链表 火车站 栈的基本状态 栈空 栈中没有元素 栈满 栈中元素个数达到上限 一般状态 栈中有元素,但未达到栈满状态 思考 设栈S的初始状态为空,如果进栈序列为A、B、C 、D 、E 、F,出栈序列为C 、B 、E 、F 、D 、A,则栈S的容量至少是多少? 进栈 //进栈 bool SeqStack :: Push( const char x ) { if( IsFull() ) return false; //栈已满 top++; stack[ top ] = x; return true } 出栈 //出栈 bool SeqStack :: Pop() { if( IsEmpty() ) //栈已空 return false; else{ top--; return true; } } 取栈顶元素 //取栈顶元素 bool SeqStack :: Top(char x){ if( IsEmpty() ) return false; //栈已空 else { x = stack[ top ]; return true; } } 两个栈共享一个一维数组 定义共享栈数据结构 const int MAX = 100 int stack[MAX], top1=0, top2=MAX-1; 进栈 //进栈 void LinkedStack
文档评论(0)