- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
;;;;表结构;交通图; 1. 研究数据元素之间的客观联系。;逻辑结构:
计算机处理的数据元素的组织形式及其相互间的关系。
由数据元素的有限集合及所有数据元素之间的关系组成。记为:
Data_Structure = (D, R)
其中,D是数据元素的有限集,R是
所有数据元素之间的关系的有限集合。
;根据数据元素间关系的基本特性,有四种基本数据结构
集合结构 数据元素间除“同属于一个集合”外,无其它关系
线性结构 一个对一个,如线性表、栈、队列
树形结构 一个对多个,如树
图状结构 多个对多个,如图;集合结构;线性结构;树结构;Graph = ( D, R );存储结构(Storage Structure):数据在计算机中的表示(或称映象)称为数据的存储结构,又称为物理结构。
四种基本的存储结构:
(1)顺序存储结构
(2)链式存储结构
(3)索引存储结构
(4)散列存储结构
同一种逻辑结构可采用不同的存储方法(以上四种之一或组合),这主要考虑的是运算方便及算法的时空要求。;顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑关系。
链式存储结构:在每一个数据元素中增加一个存放地址的指针,用此指针来表示数据元素之间的逻辑关系。
; 逻辑结构;2. 链式存储结构;;1.3 算法和算法分析;;;百钱买百鸡问题: 100元钱买100只鸡,母鸡每只5元,公鸡每只3元,小鸡3只1元,问共可以买多少只母鸡、多少只公鸡、多少只小鸡? ;方法2、3:用两重循环
因总共买100只鸡,所以小鸡的数目可以由母鸡数和公鸡数得到。
;方法4:用一重循环
由i+j+k=100和5*i+3*j+k/3=100合并为一个方程: 14*i+8*j=200,
简化: 7*i+4*j=100
得: i不超过14,i必为4的倍数?!
;; 定义:若有一辅助函数f(n),当n趋于无穷大时,T(n)/f(n) 为一不等于零的实常数,则f(n)为T(n)的同数量级函数,记为
T(n)=O(f(n))
称O(f(n))为时间复杂度。
;时间复杂度T(n)按数量级递增顺序为: ;常用的计算规则:;时间复杂度的计算:;;复习:链表;9.1.1 自己建立结构体类型;9.1.1 自己建立结构体类型;struct Student
{
int num;
char name[20];
char sex;
int age;
char addr[30];
};
;9.4.1 什么是链表;struct Student
{ int num;
float score;
struct Student *next;
}a,b,c;; 相关知识;;例如:定义结构体类型
typedef struct nodetype
{ int data;
struct nodetype *next;
}SLNode;;9.4.3 建立动态链表;9.4.3 建立动态链表;解题思路:
定义3个指针变量:head,p1和p2,它们都是用来指向struct Student类型数据
;解题思路:
用malloc函数开辟第一个结点,并使p1和p2指向它;解题思路:
读入一个学生的数据给p1所指的第一个结点;解题思路:
读入一个学生的数据给p1所指的第一个结点
使head也指向新开辟的结点;解题思路:
再开辟另一个结点并使p1指向它,接着输入该结点的数据;解题思路:
再开辟另一个结点并使p1指向它,接着输入该结点的数据;解题思路:
使第一个结点的next成员指向第二个结点,即连接第一个结点与第二个结点
使p2指向刚才建立的结点;解题思路:
使第一个结点的next成员指向第二个结点,即连接第一个结点与第二个结点
使p2指向刚才建立的结点;解题思路:
再开辟另一个结点并使p1指向它,接着输入该结点的数据;解题思路:
再开辟另一个结点并使p1指向它,接着输入该结点的数据;解题思路:
使第二个结点的next成员指向第三个结点,即???接第二个结点与第三个结点
使p2指向刚才建立的结点;解题思路:
使第二个结点的next成员指向第三个结点,即连接第二个结点与第三个结点
使p2指向刚才建立的结点;解题思路:
再开辟另一个结点并使p1指向它,接着输入该结点的数据;解题思路:
再开辟另一个结点并使p1指向它,接着输入该结点的数据;解题思路:
输入的学号为0,表示建立链表的过程完成,该结点不应连接到链表中;#inclu
文档评论(0)