完整word版数据结构清华大学出版社严蔚敏吴伟民编著.docx
- 文档编号:1216495
- 上传时间:2022-10-19
- 格式:DOCX
- 页数:82
- 大小:1.06MB
完整word版数据结构清华大学出版社严蔚敏吴伟民编著.docx
《完整word版数据结构清华大学出版社严蔚敏吴伟民编著.docx》由会员分享,可在线阅读,更多相关《完整word版数据结构清华大学出版社严蔚敏吴伟民编著.docx(82页珍藏版)》请在冰豆网上搜索。
完整word版数据结构清华大学出版社严蔚敏吴伟民编著
第一章绪论
1、数据结构是计算机中存储、组织数据的方式。
精心选择的数据结构可以带来最优效率的算法。
2、程序设计=算法+数据结构
3、解决问题方法的效率:
跟数据的组织方式有关
跟空间的利用效率有关
跟算法的巧妙程度有关
4、数据:
所有能输入到计算机中,且被计算机处理的符号的集合,是计算机操作对象的总称;
是计算机处理的信息的某种特定的符号表示形式。
5、数据元素:
数据中的一个“个体”,数据结构中讨论的基本单位。
相当于“记录”,在计算机程序中通常作为一个整体考虑和处理。
6、数据项:
相当于记录的“域”,是数据的不可分割的最小单位如学号。
数据元素是数据项的集合。
7、数据对象:
性质相同的数据元素的集合.
例如:
所有运动员的记录集合
8、数据结构:
是相互间存在某种关系的数据元素集合。
9、数据结构是带结构的数据元素的集合。
10、不同的关系构成不同的结构。
11、次序关系:
{vai,ai+1>|i=1,2,3,4,5,6}
12、对每种数据结构,主要讨论如下两方面的问题:
1)数据的逻辑结构,数据结构的基本操作;
2)数据的存储结构,数据结构基本操作的实现;
13、数据的逻辑结构:
数据之间的结构关系,是具体关系的抽象。
数据结构的基本操作:
指对数据结构的加工处理。
14、数据的存储结构(物理结构):
数据结构在计算机内存中的表示。
数据结构基本操作的实现:
基本操作在计算机上的实现(方法)。
15、数据结构的有关概念
|线性表
「上线性结构!
栈
[队
(仁数据的逻辑结构=i
数£结构的三个方廁
B.非彌結构I树形结构JI图形结构
木数据的存储结枸IA噸序行储
B链式存储
<3、数据的运算:
檢索.插入.删除*烽改等
16、数据元素的4类的基本结构:
1集合;
2线性结构:
结构中数据元素之间存在一对一的关系;
3树形结构:
结构中数据元素之间存在一对多的关系;
②4图状结构或网状结构:
结构中数据元素之间存在多对多的关系。
17、C语言的优点:
C语言可以直接操作内存。
18、每个节点都由两部分组成:
数据域和指针域。
19、链接存储结构特点:
比顺序存储结构的存储密度小
(每个节点都由数据域和指针域组成)。
逻辑上相邻的节点物理上不必相邻。
插入、删除灵活
(不必移动节点,只要改变节点中的指针)。
20、数据类型是一个值的集合和定义在此集合上的一组操作的总称。
21、ADT有两个重要特征:
数据抽象和数据封装。
22、抽象数据类型(AbstractDataType简称ADT):
是指一个数
学模型以及定义在此数学模型上的一组操作。
23、抽象数据类型有:
数据对象〈数据对象的定义〉、数据关系〈数据关系的定义〉、基本操作〈基本操作的定义〉。
24、数据类型的定义和含义。
定义:
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
含义:
将数据按一定次序与形式存放的结构
24、算法空间复杂度S(n)
算法的存储量包括:
1输入数据所占的空间;
2程序本身所占的空间;
③辅助变量所占的空间。
25、算法具有有穷性、确定性、可行性、输入和输出五大特性。
26、抽象数据类型具有数据抽象、数据封装的特点。
27、数据的储存结构分为:
顺序存储结构和链式存储结构。
第二章线性表
1、线性结构的特点:
在数据元素中的非空有限集中。
(1)存在唯一的一个被称作“第一”的数据元素;
(2)存在唯一的一个被称作“最后一个”的数据元素;
(3)除第一个外,集合中的每一个数据元素均只有一个前驱;
(4)除最后一个外,集合中的每一个数据元素均只有一个后继。
2、线性表(LinearList):
一个线性表是n个数据元素的有限序列
3、线性表的顺序存储实现:
typedefstruct{
ElementTypeData[MAXSIZE];
intLast;
}List;
ListL,*PtrL;
4、初始化(建立空的顺序表)
List*MakeEmpty()
{List*PtrL;
PtrL=(List*)malloc(sizeof(List));
PtrL->Last=-1;
returnPtrL;
}
5、查找
intFind(ElementTypeX,List*PtrL)
{inti=0;
while(i<=PtrL->Last&&PtrL->Data[i]!
=X)
i++;
if(i>PtrL->Last)return-1;/*如果没找到,返回-1*/elsereturni;/*找到后返回的是存储位置*/
}
6、插入算法
voidInsert(ElementTypeX,inti,List*PtrL)
{intj;
if(PtrL->Last==MAXSIZE-1){/*表空间已满,不能插入*/printf("表满");
return;
}
if(i<1||i>PtrL->Last+2){/*检查插入位置的合法性*/printf("位置不合法");
return;
}
for(j=PtrL->Last;j>=i-1;j--)
PtrL->Data[j+1]=PtrL->Data[j];/*将ai~an倒序
向后移动*/
PtrL->Data[i-1]=X;/*新元素插入*/
PtrL->Last++;/*Last仍指向最后元素*/
return;
}
7、删除算法
voidDelete(inti,List*PtrL)
{intj;
if(i<1||i>PtrL->Last+1){/*检查空表及删除位置的合法性
*/
printf(不存在第%d个元素”,i);
return;
}
for(j=i;j<=PtrL->Last;j++)
PtrL->Data[j-1]=PtrL->Data[j];/*将ai+1〜an顺序向
前移动*/
PtrL->Last--;/*Last仍指向最后元素*/
return;
}
8、求表长
intLength(List*PtrL)
{List*p=PtrL;/*p指向表的第一个结点*/
intj=0;
while(p){
p=p->Next;
j++;/*当前p指向的是第j
个结点*/
}
returnj;
}
9、查找
1)按序号查找:
FindKth;
List*FindKth(intK,List*PtrL)
{List*p=PtrL;
inti=1;
while(p!
=NULL&&i p=p->Next; i++; } if(i==K)returnp; /*找到第K个,返回指针*/ elsereturnNULL; /*否则返回空*/ } 2)按值查找: Find List*Find(ElementTypeX,List*PtrL) { List*p=PtrL; while(p! =NULL&&p->Data! =X)p=p->Next; returnp; } 10、插入(在链表的第i-1(1wiwn+1)个结点后插入一个值为X的新 结点) List*Insert(ElementTypeX,inti,List*PtrL) {List*p,*s; if(i==1){/*新结点插入在表头*/ s=(List*)malloc(sizeof(List));/*申请、填装结点*/s->Data=X; s->Next=PtrL; returns;/*返回新表头指针*/ } p=FindKth(i-1,PtrL);/*查找第i-1个结点*/ if(p==NULL){/*第i-1个不存在,不能 插入*/ printf("参数i错"); returnNULL; }else{ s=(List*)malloc(sizeof(List));/*申请、填装结点 */ s->Data=X; s->Next=p->Next;/*新结点插入在第i-1 个结点的后面*/ p->Next=s; returnPtrL; 11、删除(删除链表的第i(1 List*Delete(inti,List*PtrL) {List*p,*s; if(i==1){/*若要删除的是表的 第一个结点*/ s=PtrL;/*s指向第1个结点 */ PtrL=PtrL->Next;/*从链表中删除*/free(s);/*释放被删除结点 */ returnPtrL; } p=FindKth(i-1,PtrL);/*查找第i-1个结点*/ if(p==NULL){ printf(第%小个结点不存在”,-1);return NULL; }elseif(p->Next==NULL){ printf(第%小个结点不存在”j);return NULL; }else{ p->Next=s->Next; /*从链表中删除*/ free(s); /*释放被删除 结点*/ returnPtrL; } } 12、链表不具备的特点是1。 ①可随机访问任一节点②插入删除不须要移动元素 3不必事先估计存储空间④所需空间与其长度成正比 13、带头结点的单链表head为空的判定条件是2。 ①head==NULL②head->next==NULL ③head->next==head④head! =NULL 14、如果最常用的操作是取第i个结点及其前驱,则采用」存 储方式最节省时间。 ①单链表②双链表③单循环链表④顺序表 第三章Chapter3栈(stacks)和队列(queues) 1、栈是限定仅能在表尾一端进行插入、删除操作的线性表。 2、栈的特点是“后进栈的元素先出栈”(lastin,firstout),故栈又 称为后进先出表(LIFO)。 3、一个栈是一些元素的线形列表,其中元素的插入和删除均在表的同一端进行。 插入和删除发生的一端称为栈顶(thetopofthestack)。 4、第一个进栈的元素在栈底,最后一个进栈的元素在栈顶,第一个出栈的元素为栈顶元素,最后一个出栈的元素为栈底元素。 5、连续栈(ContiguousStack的类型定义 #defineMaxStack50 Typedefstruct {datatypestack[MaxStack]; inttop; }Seqstack
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 数据结构 清华大学出版社 严蔚敏吴伟民 编著