ImageVerifierCode 换一换
格式:DOC , 页数:29 ,大小:1.02MB ,
资源ID:14575859      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/14575859.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构知识点全面总结精华版Word格式文档下载.doc)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构知识点全面总结精华版Word格式文档下载.doc

1、 用计算语句频度来估算算法的时间复杂度。第二章 线性表 线性表的逻辑结构定义,对线性表定义的操作。 线性表的定义:用数据元素的有限序列表示 线性表的存储结构:顺序存储结构和链式存储结构。顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。链式存储结构: 其结点在存储器中的位置是随意的,即逻辑上相邻的数据元素在物理上不一定相邻。通过指针来实现! 线性表的操作在两种存储结构中的实现。数据结构的基本运算:修改、插入、删除、查找、排序1) 修改通过数组的下标便可访问某个特定元素并修改之。 核心语句: Vi=x; 顺序表修改操作的时间效率是 O(1)2) 插入在线性表的第i个位置

2、前插入一个元素 实现步骤: 将第n至第i 位的元素向后移动一个位置; 将要插入的元素写到第i个位置; 表长加1。 注意:事先应判断: 插入位置i 是否合法?表是否已满? 应当符合条件: 1in+1 或 i=1, n+1 核心语句:for (j=n; j=i; j-)aj+1=a j ; a i =x; n+; 插入时的平均移动次数为:n(n+1)/2(n+1)n/2O(n) 3) 删除删除线性表的第i个位置上的元素 实现步骤: 将第i+1 至第n 位的元素向前移动一个位置; 表长减1。 注意:事先需要判断,删除位置i 是否合法? 应当符合条件:1in 或 i=1, n 核心语句:for ( j

3、=i+1; j=n; j+ )aj-1=aj;n-; 顺序表删除一元素的时间效率为:T(n)=(n-1)/2 O(n) 顺序表插入、删除算法的平均空间复杂度为O(1)单链表:(1)用单链表结构来存放26个英文字母组成的线性表(a,b,c,z),请写出C语言程序。#includestdlib.htypedef struct nodechar data;struct node *next;node;node *p,*q,*head; /一般需要3个指针变量int n ; / 数据元素的个数int m=sizeof(node); /*结构类型定义好之后,每个node类型的长度就固定了, m求一次即可

4、*/void build( ) /字母链表的生成。要一个个慢慢链入 int i;head=(node*)malloc(m); /m=sizeof(node) 前面已求出p=head;for( i=1; idata=i+a-1; / 第一个结点值为字符anext=(node*)malloc(m); /为后继结点“挖坑”!p=p-next; /让指针变量P指向后一个结点 /最后一个元素要单独处理next=NULL ; /单链表尾结点的指针域要置空! void display() /字母链表的输出 p=head; while (p) /当指针不空时循环(仅限于无头结点的情况) printf(%c,p

5、-data); p=p-next; /让指针不断“顺藤摸瓜” (2) 单链表的修改(或读取)思路:要修改第i个数据元素,必须从头指针起一直找到该结点的指针p, 然后才能:pdata=new_value 读取第i个数据元素的核心语句是:Linklist *find(Linklist *head ,int i) int j=1; Linklist *p; P=head- While(p!=NULL)&(j j+; return p; 3. 单链表的插入链表插入的核心语句:Step 1:s-next=p-Step 2:next=s ;6. 单链表的删除删除动作的核心语句(要借助辅助指针变量q):q

6、= p- /首先保存b的指针,靠它才能找到c;next=q- /将a、c两结点相连,淘汰b结点;free(q) ; /彻底释放b结点空间7. 双向链表的插入操作:设p已指向第 i 元素,请在第 i 元素前插入元素 x: ai-1的后继从 ai ( 指针是p)变为 x(指针是s) : s-next = p ; p-prior-next = s ; ai 的前驱从 ai-1 ( 指针是p-prior)变为 x ( 指针是s);prior = p -prior ; p-prior = s ; 8. 双向链表的删除操作:设p指向第 i 个元素,删除第 i 个 元素后继方向:ai-1的后继由 ai (

7、指针p)变为 ai+1(指针 p -next ); p -next = p-next ;前驱方向:ai+1的前驱由 ai ( 指针p)变为ai-1 (指针 p - prior ); p-next- 数组的逻辑结构定义及存储数组: 由一组名字相同、下标不同的变量构成N维数组的特点:n个下标,每个元素受到n个关系约束一个n维数组可以看成是由若干个n1维数组组成的线性表。存储:事先约定按某种次序将数组元素排成一列序列,然后将这个线性序列存入存储器中。 在二维数组中,我们既可以规定按行存储,也 可以规定按列存储。设一般的二维数组是Ac1.d1, c2.d2,则行优先存储时的地址公式为:二维数组列优先存

8、储的通式为: 稀疏矩阵(含特殊矩阵)的存储及运算。 稀疏矩阵:矩阵中非零元素的个数较少(一般小于5%) 线性表的逻辑结构,指线性表的数据元素间存在着线性关系。在顺序存储结构中,元素存储的先后位置反映出这种线性关系,而在链式存储结构中,是靠指针来反映这种关系的。 顺序存储结构用一维数组表示,给定下标,可以存取相应元素,属于随机存取的存储结构。 链表操作中应注意不要使链意外“断开”。因此,若在某结点前插入一个元素,或删除某元素,必须知道该元素的前驱结点的指针。 掌握通过画出结点图来进行链表(单链表、循环链表等)的生成、插入、删除、遍历等操作。 数组(主要是二维)在以行序/列序为主的存储中的地址计算

9、方法。 稀疏矩阵的三元组表存储结构。 稀疏矩阵的十字链表存储方法。补充重点:1.每个存储结点都包含两部分:数据域和指针域(链域)2.在单链表中,除了首元结点外,任一结点的存储位置由 其直接前驱结点的链域的值 指示。3.在链表中设置头结点有什么好处? 头结点即在链表的首元结点之前附设的一个结点,该结点的数据域可以为空,也可存放表长度等附加信息,其作用是为了对链表进行操作时,可以对空表、非空表的情况以及对首元结点进行统一处理,编程更方便。4. 如何表示空表?(1)无头结点时,当头指针的值为空时表示空表;(2)有头结点时,当头结点的指针域为空时表示空表。5.链表的数据元素有两个域,不再是简单数据类型

10、,编程时该如何表示? 因每个结点至少有两个分量,且数据类型通常不一致,所以要采用结构数据类型。6.sizeof(x) 计算变量x的长度(字节数); malloc(m) 开辟m字节长度的地址空间,并返回这段空间的首地址; free(p) 释放指针p所指变量的存储空间,即彻底删除一个变量。7. 链表的运算效率分析:(1)查找 因线性链表只能顺序存取,即在查找时要从头指针找起,查找的时间复杂度为 O(n)。(2) 插入和删除 因线性链表不需要移动元素,只要修改指针,一般情况下时间复杂度为 O(1)。但是,如果要在单链表中进行前插或删除操作,因为要从头查找前驱结点,所耗时间复杂度将是 O(n)。例:在

11、n个结点的单链表中要删除已知结点*P,需找到它的前驱结点的地址,其时间复杂度为 O(n)8. 顺序存储和链式存储的区别和优缺点? 顺序存储时,逻辑上相邻的数据元素,其物理存放地址也相邻。顺序存储的优点是存储密度大,存储空间利用率高;缺点是插入或删除元素时不方便。链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针。链式存储的优点是插入或删除元素时很方便,使用灵活。缺点是存储密度小,存储空间利用率低。 顺序表适宜于做查找这样的静态操作; 链表宜于做插入、删除这样的动态操作。 若线性表的长度变化不大,且其主要操作是查找,则采用顺序表; 若线性表的长度变化较大,且其主要操作是插入、删除操作,则采用链表。9. 判断:“数组的处

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

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