数据结构基础知识

上传人:re****.1 文档编号:495506402 上传时间:2024-02-26 格式:DOC 页数:10 大小:165.50KB
返回 下载 相关 举报
数据结构基础知识_第1页
第1页 / 共10页
数据结构基础知识_第2页
第2页 / 共10页
数据结构基础知识_第3页
第3页 / 共10页
数据结构基础知识_第4页
第4页 / 共10页
数据结构基础知识_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《数据结构基础知识》由会员分享,可在线阅读,更多相关《数据结构基础知识(10页珍藏版)》请在金锄头文库上搜索。

1、复习提纲第一章数据结构概述基本概念与术语(P3)1数据结构是一门研究非数值计算程序设计问题中计算机的操作对象以及他们之间的关系和操作的学科.2数据是用来描述现实世界的数字,字符,图像,声音,以及能够输入到计算机中并能被计算机识别的符号的集合2数据元素是数据的基本单位3数据对象相同性质的数据元素的集合4数据结构三方面内容:数据的逻辑结构.数据的存储结构.数据的操作.(1)数据的逻辑结构指数据元素之间固有的逻辑关系.(2)数据的存储结构指数据元素及其关系在计算机内的表示(3)数据的操作指在数据逻辑结构上定义的操作算法,如插入,删除等.5. 时间复杂度分析1、名词解释:数据结构、二元组2、根据数据元

2、素之间关系的不同,数据的逻辑结构可以分为集合、线性结构、树形结构和图状结构四种类型。3、常见的数据存储结构一般有四种类型,它们分别是顺序存储结构、链式存储结构、索引存储结构和散列存储结构。4、以下程序段的时间复杂度为0(N2)。inti,j,x;for(i=0;in:i+)n+1for(j=0;j=0)个具有相同性质的数据元素al,a2,有穷序列/顺序表结构#defineMAXSIZE100typedefintDataType;TypedefstructDataTypeitemsMAXSIZE;Intlength;Sqlist,*LinkList;2.单链表(1) 链表结点结构/链表的节点结构

3、TypedefstructNodeintdata;structNode*next;Lnode,*Pnode,*LinkList;(2) 结点遍历voidTraverseList(LinkListt)LinkListp;while(t)p=t;t=t-nextfree(p);(3) 链表操作算法:初始化、插入、输出、删除voidInitList(LinkList*h)*h=(LinkList)malloc(sizeof(LNode);if(!h)print(“初始化错误”);return;(*h)-next=NULL;voidInsertList(LinkListh,intpos,datatyp

4、ex)LinkListp=h,q;inti=0;while(p&inext;i+;if(!p|ipos-l)print(“插入位置出错!);InitList(&q);q-next=NULL;q-data=x;voidDeleteList(LinkListh,intpos)LinkListp=h,q;inti=0;while(p&inext;i+;if(!p|ipos-l)coutnext;p-next=q-next;free(q);1、线性表中,第一个元素没有直接前驱,最后一个元素没有直接后驱。2、在一个单链表中,若p所指结点是q所指结点的前驱结点,则删除结点q的操作语句为p-next=q-n

5、ext;free(q);。3、在长度为N的顺序表中,插入一个新元素平均需要移动表中n/2个元素,删除一个元素平均需要移动(n-1)/2个元素。4、若线性表的主要操作是在最后一个元素之后插入一个元素或删除最后一个元素,则采用_带头结点的双循环链表_存储结构最节省运算时间。5、已知顺序表中每个元素占用3个存储单元,第13个元素的存储地址未336,则顺序表的首地址为_300。6、设有一带头结点单链表L,请编写该单链表的初始化,插入、输出和删除函数。(函数名自定义)voidInitList(LinkList*L)(*L)=(LinkList)malloc(sizeof(LNode);if(!L)cou

6、tnext=NULL;voidInsertList(LinkListL,intpos,DataTypex)LinkListp=L,q;inti=0;while(p&inext;i+;if(!p|ipos-1)coutnext=p-next;p-next=q;q-data=x;voidTraverseList(LinkListL)LinkListt;while(L)t=L;L=L-next;free(t);voidTraverseList(LinkListL)LinkListt=L;while(L)t=t-next;coutdata”;coutendl;voidDeleteList(LinkLi

7、stL,intpos)LinkListp=L,q;inti=0;while(p&inext;i+;if(!p|ipos-1)coutnext;p-next=q-next;free(q):第三章栈和队列1栈(1)(2)(3)2.队列(1)栈的结构与定义顺序栈操作算法:入栈、出栈、判断栈空等链栈的结构与定义队列的定义1、一个栈的入栈序列为“ABCDE”,则以下不可能的出栈序列是()A.BCDAEB.EDACBC.BCADED.AEDCB2、栈的顺序表示仲,用TOP表示栈顶元素,那么栈空的条件是()A.TOP=STACKSIZEB.TOP=1C.TOP=0D.TOP=-13、允许在一端插入,在另一端

8、删除的线性表称为队列。插入的一端为队尾,删除的一端为队头。4、栈的特点是先进后出,队列的特点是先进先出。5、对于栈和队列,无论他们采用顺序存储结构还是链式存储结构,进行插入和删除操作的时间复杂度都是O(1)。6、已知链栈Q,编写函数判断栈空,如果栈空则进行入栈操作,否则出栈并输出。(要求判断栈空、出栈、入栈用函数实现)voidEmptyStack(LinkStackQ)LinkStackt;charx=a;/假设链栈存储字符型数据if(Q-next)t=Pop(Q,x);coutdata;elsePush(Q,x);基本概念数据结构的研究对象是什么?数据,数据元素(数据结构中讨论的基本单位、数

9、据整体中相对独立的单位、数据元素的特点:相对性),数据结构,数据类型和抽象数据类型,数据对象数据结构是什么?定义:数据元素以及它们之间存在一种或多种特定的关系。特点:数据元素集合相同,而其上的关系不同,则构成的数据结构不同。逻辑结构是什么?主要有哪几类?逻辑结构:对数据元素之间存在的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合上的若干关系表示。存储结构是什么?存储结构:是数据逻辑结构在计算机中的表示和实现,故又称数据物理结构。什么是算法?定义:是对问题求解过程的一种描述,是为解决一个或一类问题给出的一个确定的、有限长的操作序列。五大特性:有穷性、确定性、可行性、输入、输出线性表线性

10、表的定义?线性表是由n(n0)个属性相同数据元素a1,a2an组成的一个有限序列,线性表或是空表,或可以表示为A=(a1,a2,ai,,an)其中ai(i=1,2,,n)是线性表中的一个元素。如何在顺序存储结构表示的线性表中实现插入元素操作?intinsertElement(List_Array*list_ptr,char*element)/把新字符串插入到线性表的最后位置if(list_ptr-count=LISTMAX)return(-1);/到达最大大小elsestrcpy(list_ptr-listlist_ptr-count,element);list_ptr-count+;/下一个

11、元素return(1);/成功返回如何在顺序存储结构表示的线性表中实现元素删除操作? intdeleteElement(List_Array*list_ptr,intpos) intk; 检查下标pos位置上是否存在数据if(poslist_ptr-count-1)return(-1);/出错else/将pos位置后所有元素向前移动for(k=pos;kcount-1;k+)strcpy(list_ptr-listk,list_ptr-listk+1);list_ptr-count-;return(1);/删除成功如何在顺序存储结构表示的线性表中找到元素后继?物理地址上紧接着该元素后一个级即该

12、元素的后继用数组的下标加1即可找到.如何在顺序存储结构表示的线性表中找到元素前驱?物理地址上紧接着该元素前一个即该元素的前驱用数组下标减1即可找到链表什么是链接存储结构?通过指针管理的一组存储单元,(这组存储单元的内存地址可以是连续的,也可以是不连续的)。链接存储结构中的每个存储单元称为“结点”,结点包含一个数据域和一个指针域;链接存储结构中的结点通过指针域指示后继结点的内存地址;访问链接存储结构通常由第一个结点开始,逐一访所有结点。如何将新结点添加到单链表中?表头位置Node*t=newNode:t-Data=d;t-next=head;head=t;表尾位置Node*t=newNode:t

13、-data=d;last-next=t:last=t;两个结点中间查找单链表中指定结点?设置一个跟踪链表结点的指针p,初始时p指向链表中的第一个结点,然后顺着next域依次指向每个结点,每指向一个结点就判断其是否等于指定结点,若是则返回该结点地址。否则继续往后搜索,直到p为NULL,表示链表中无此元素,返回NULL。算法的时间复杂度为0(n)。如何删除单链表中的结点?要删除链表中第i个结点,首先在单链表中找到删除位置i1前一个结点,并用指针p指向它,指针t指向要删除的结点。将指针p所指结点的指针域修改为所t指结点的后继结点的地址。从链表中删除链接关系后的结点需动态的释放(delete)。Nod

14、e*t,*p;t=p-next;p-next=t-next;deletet;如何用单链表表示线性表?如何实现链接存储结构表示的线性表的操作?插入、删除、查找栈和队列什么是栈?栈(Stack)是限定只能在表的一端进行插入和删除操作的线性表。栈中允许插入和删除运算的一端称作栈顶(top)不允许插入和删除的另一端称作栈底(bottom)如何实现栈的入栈和出栈操作?栈顶表示(两种存储结构)入栈、出栈什么是队列?队列(queue)是限定只能在表的一端进行插入,在表的另一端进行删除的线性表、队尾(rear)允许插入的一端、队头(front)允许删除的一端如何实现队列的入队和出队操作?队头、队尾(两种存储结构)循

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号