完整word版数据结构清华大学出版社严蔚敏吴伟民编著.docx

上传人:b****3 文档编号:1216495 上传时间:2022-10-19 格式:DOCX 页数:82 大小:1.06MB
下载 相关 举报
完整word版数据结构清华大学出版社严蔚敏吴伟民编著.docx_第1页
第1页 / 共82页
完整word版数据结构清华大学出版社严蔚敏吴伟民编著.docx_第2页
第2页 / 共82页
完整word版数据结构清华大学出版社严蔚敏吴伟民编著.docx_第3页
第3页 / 共82页
完整word版数据结构清华大学出版社严蔚敏吴伟民编著.docx_第4页
第4页 / 共82页
完整word版数据结构清华大学出版社严蔚敏吴伟民编著.docx_第5页
第5页 / 共82页
点击查看更多>>
下载资源
资源描述

完整word版数据结构清华大学出版社严蔚敏吴伟民编著.docx

《完整word版数据结构清华大学出版社严蔚敏吴伟民编著.docx》由会员分享,可在线阅读,更多相关《完整word版数据结构清华大学出版社严蔚敏吴伟民编著.docx(82页珍藏版)》请在冰豆网上搜索。

完整word版数据结构清华大学出版社严蔚敏吴伟民编著.docx

完整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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1