- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构讨论范畴课件
;一、数据结构讨论的范畴;一、数据结构讨论的范畴;二、基本概念;1. 数据与数据结构;是数据(集合)中的一个“个体”;数据结构:; 是研究数据的逻辑结构和物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,设计出相应的算法,而且确保经过这些运算以后所得的新结构仍然是原来的结构类型;概括地说:;数据的逻辑结构可归结为以下四类:;数据的存储结构 ;关系的映象方法:;链式映象;2. 抽象数据类型
(Abstract Data Type 简称ADT);三、算法和算法的衡量; 算法是对解决某类问题的方法的一种描述。一个算法必须满足以下五个重要特性:; 随着问题规模 n 的增长,算法执行时间的增长率和 f(n) 的增长率相同。;;线性表的概念;顺序映象方法是:
逻辑关系相邻, 物理位置相邻.;const int MaxSize=50;;一、有关空表的操作 ?;二、有关查找的操作; 从表头元素起依次访问每一个元素,并且每个元素只被访问一次 ;三 、有关插入的操作 ?;a1 a2 … ai-1 ai … an;四、有关删除的操作 ?;ai-1;s = new LNode;
s-data = e; //生成新结点
s-next = p-next;
p-next = s; //插入;ai-1;逆位序输入建立带头结点的单链表; 最后一个结点的指针域的指针又指回第一个结点;ai-1;ai-1;;压缩存储方法:;; 需要把具有相同行号的三元组结点按照列号从小到大的顺序链接成一个单链表,每个三元组结点的类型可定义为:;;三、 十字链表;广义表的概念 ;广义表结构的特点:; 广义表的存储结构;广义表的运算;1.求广义表长度的递归算法
int Lenth(GLNode* GL)
{ if(GL!=NULL)
return 1+Lenth(GL-next);
else return 0;
}; 非递归算法如下:
int Lenth(GLNode* GL)
{ int len=0;
while(GL!=NULL)
{ len++; GL=GL-next; }
return len;
};深度=Max {子表的深度} +1; 1 ;;栈的应用举例;表达式求值;如何从后缀式求值?;栈与递归 ;队列的定义;求余:
X %QueueMaxSize
结果在
0~ QueueMaxSize-1
之间
; 将新元素item的值插入到队尾
void Qinsert(QueueType Q,
const ElemType item);
从队列Q中删除队首元素并返回之
ElemType Qdelete
(QueueType Q); ; struct LNode
{
ElemType data;
LNode *next;
} ; ; 链队列类型
struct LinkQueue{
LNode *front; //队头指针
LNode *rear; //队尾指针
} ;;a1;a1;∧
文档评论(0)