- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
西交大数据结构
一、绪论:
对于人类和计算机科学推理与计算机来说,真正有用的不是数据本身,而是数据所携带的信息。
全球信息化,信息结构化,处理自动化。
数据结构就是数据组织的方法,是计算机解题的算法的一部分。
程序设计 数据结构+算法。P DS+AL D.Writh
有的定关系的数据元素的集合。
计算机的操作对象以及他们之间的关系和操作的学科。
计算机科学与其说是一门科学不如说是一门艺术。
计算机科学的核心是算法。
正确,易懂,易修改,易测试。
存储形式:
线性:数组 串 表 队 栈
非线性: 树 图
文件: 线性、Typedef 数据结构的类型的定义。Elemtype 数据元素的定义。
数据元素名:abcde
整形变量名:ijklmn
指针变量名:pqr
算法的五个传统的特性:确定性,可行性,有输入(零个或者多个),有输出(至少有一个输出结果),有穷性。
算法设计不等于程序设计。程序不具备有穷性(一个操作系统)。
好设计的四点基本目标:正确性,可读性(自己看被人看),健壮性(非法数据应报错),高效率低存储。
时间复杂度:T n 0 f n 用问题规模的数量级表述。 编译时耗+运行时耗。
空间复杂度:S n O f n 内存量
好设计准则:
程序设计原始任务说明。
程序工作正确
程序包含方案如何使用以及方案如何解题。
程序有效地利用了函数来建立逻辑单元。
程序代码可读。
程序运行的时间是否可以接受。
运行时间的测度:
方法一:
#include
Cloock_t start,stop;
Double duration;
Start clock ;
……..
Stop clock ;
duration double stop-start /CLK_TCK;
方法二:
#include
Time_t start,stop;
Double duration;
Start time NULL ;/*开始测定时间 几秒内。
…….
Stop time NULL ;/*停止测定时间,几秒内。
Duration double difftime stop-start ;
……….
只有在程序运行后才能得到。使用指导意义不大。
渐进符号:O(上界) w(下界) @(确界)。
逻辑结构+存储结构。
第二章 线性表
N个数据元素的有限序列。
节点,结点,顶点,数据元素均为一个意思,即处理对象。
线性表的ADT定义:12种标准操作算法。类C语言表示。函数库,C语言库。
顺序存储:借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。
Loc ai Loc a1 + i-1 *L; L是节点的大小。
逻辑顺序和物理顺序一致,线性关系利用物理上的相邻关系来体现。
插入需要考虑分配,而删除不需要考虑分配。
插入删除元素需要移动大量的元素,附加操作多。
数组长度过大时,预留空间浪费大。不能处理变长表。要求存储区连续。
链式表示和实现:
各节点之间以指针(指出元素地址)相连的数据结构。
节点:数据域+指针域。
带头结点的单链表。头结点没有data值,指向表首元。
动态结构无需预先分配空间。malloc 非随机存取,循链进行。
带头结点的空单链表 L- next NULL;
不带头结点的空单链表 L NULL;
typedef struct LNode
int data;
struct LNode *next;
Lnode,*Linklist;
单链表插入:s- next p- next;p- next s;次序不能发生变化。
单链表的删除:p- next s- next;free s ;
void CreateLinkF Linklist L,int n Linklist s;
L Linklist malloc sizeof LNode ;
L- next NULL;
for ;n 0;n-- s Linklist malloc sizeof LNode ;
scanf %d,s- data ;
s- next L- next;
L- next s; 循环链表 :
初始化:L- next L;
遍历:从头结点开始遍历结束的条件是p L;
循环链表插入:S- next p- next; p- next s; p s; 从头结点出插入。
双向链表:
有两个指针域。
双链表的插入:newnode- llink s;newnode- rlink s- rlink;
s- rlink- llink newnode;s- rlink newnode;
双向链表的删除: deleted- llink- rlink deleted- rlink;deleted- rlink- l
文档评论(0)