数据结构基础知识
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
复习提纲
第一章数据结构概述
基本概念与术语(P3)
1.数据结构是一门研究非数值计算程序设计问题中计算机的操作对象以及他们之间的关系和操作的学科.
2.数据是用来描述现实世界的数字, 字符, 图像, 声音, 以及能够输入到计算机中并能被计算机识别的符号的集合
2.数据元素是数据的基本单位
3.数据对象相同性质的数据元素的集合
4.数据结构三方面内容:数据的逻辑结构.数据的存储结构.数据的操作.
(1)数据的逻辑结构指数据元素之间固有的逻辑关系.
(2)数据的存储结构指数据元素及其关系在计算机内的表示
( 3 ) 数据的操作指在数据逻辑结构上定义的操作算法,如插入,删除等.
5.时间复杂度分析
--------------------------------------------------------------------------------------------------------------------
1、名词解释:数据结构、二元组
2、根据数据元素之间关系的不同,数据的逻辑结构可以分为
集合、线性结构、树形结构和图状结构四种类型。
3、常见的数据存储结构一般有四种类型,它们分别是___顺序存储结构_____、___链式存储结构_____、___索引存储结构_____和___散列存储结构_____。
2
4、以下程序段的时间复杂度为___O(N )_____。
int i,j,x;
for(i=0;i for(j=0;j x+=i; ------------------------------------------------------------------------------------------------------------------ 第二章线性表 1. 顺序表结构由n(n>=0) 个具有相同性质的数据元素a1,a2,a3 ,, ,an 组成的 有穷序列 // 顺序表结构 #define MAXSIZE 100 typedef int DataType; Typedef struct{ DataType items[MAXSIZE]; Int length; }Sqlist,*LinkList; 2. 单链表 (1)链表结点结构 // 链表的节点结构 Typedef struct Node{ int data; struct Node *next; } Lnode,*Pnode,*LinkList; (2)结点遍历 void TraverseList(LinkList t){ LinkList p; while(t){ p=t; t=t->next free(p); } } (3)链表操作算法:初始化、插入、输出、删除 void InitList(LinkList *h){ *h=(LinkList)malloc(sizeof(LNode)); if(!h){ print( “初始化错误”); return; } (*h)->next=NULL; } void InsertList(LinkList h,int pos,datatype x){ LinkList p=h,q; int i=0; while(p&&i p=p->next; i++; } if(!p||i>pos-1)print( “插入位置出错!! ”); InitList(&q); q->next=NULL; q->data=x; } void DeleteList(LinkList h,int pos){ LinkList p=h,q; int i=0; while(p&&i p=p->next; i++; } if(!p||i>pos-1){cout<< ”删除位置错误”;return;} q=p->next; p->next=q->next; free(q); } ----------------------------------------------------------------------------------------------------------------- 1、线性表中,第一个元素没有直接前驱,最后一个元素没有直接后驱。 2、在一个单链表中,若p 所指结点是q 所指结点的前驱结点,则删除结点q 的操作语句为p->next=q->next;free(q); 。 3、在长度为N 的顺序表中,插入一个新元素平均需要移动表中n/2 个元素,删除一个元素 平均需要移动(n-1)/ 2个元素。 4、若线性表的主要操作是在最后一个元素之后插入一个元素或删除最后一个元素,则采 用___带头结点的双循环链表__存储结构最节省运算时间。 5、已知顺序表中每个元素占用 3 个存储单元,第13 个元素的存储地址未336,则顺序表的 首地址为___300_____。 6、设有一带头结点单链表L,请编写该单链表的初始化,插入、输出和删除函数。(函数名自定义) ----------------------------------------------------------------------------------------------------------------