没有合适的资源?快使用搜索试试~ 我知道了~
数据结构(C语言版)期末复习汇总.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 183 浏览量
2021-10-04
22:14:38
上传
评论
收藏 808KB DOC 举报
温馨提示
试读
13页
数据结构(C语言版)期末复习汇总.doc
资源推荐
资源详情
资源评论
数据结构(C 语言版) 期末复习汇总
第一章 绪论
数据结构:是一门研究非数值计算程序设计中的操作对象,以与这些对象之间的关系和操
作的学科。
数据结构是一门综合性的专业课程,是一门介于数学、计算机硬件、计算机软件之间的一
门核心课程。是设计和实现编译系统、操作系统、数据库系统与其他系统程序和大型应用
程序的基础。
数据:是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总
称。如数学计算中用到的整数和实数,文本编辑中用到的字符串,多媒体程序处理的图形
图像、声音与动画等通过特殊编码定义后的数据。
数据的逻辑结构划分:线、树、图
算法的定义与特性
算法:是为了解决某类问题而规定的一个有限长的操作序列。
五个特性:有穷性、确定性、可行性、输入、输出
评价算法优劣的基本标准(4 个):
正确性、可读性、健壮性、高效性与低存储量
第二章 线性表
线性表的定义和特点:
线性表:由 n(n≥0)个数据特性相同的元素构成的有限序列。线性表中元素个数 n(n≥0)定
义为线性表的长度,n=0 时称为空表。
非空线性表或线性结构,其特点:
(1)存在唯一的一个被称作“第一个”的数据元素;
(2)存在唯一的一个被称作“最有一个”的数据元素;
(3)除第一个之外,结构中的每个数据元素均只有一个前驱;
(4)除最后一个之外,结构中的每个数据元素均只有一个后继。
顺序表的插入:n 个元素在 i 位插入,应移动( n-i+1 ) 位元素。
顺序表存储结构的优缺点:
优点:
逻辑相邻,物理相邻;可随机存取任一元素;存储空间使用紧凑;
缺点:
插入、删除操作需要移动大量的元素;预先分配空间需按最大空间分配,利用不充分;
表容量难以扩充;
线性表的应用:
一般线性表的合并:★★★
算法 2.1:LA=(7,5,3,11) LB=(2,6,3)
合并后 LA=(7,5,3,11,2,6)
算法思想:扩大线性表 LA,将存在于线性表 LB 中而不存在于线性表 LA 中的数据元素插
入到线性表 LA 中去。只要从线性表 LB 中依次取得每个数据元素,并依值在线性表 LA 中
进行查访,若不存在,则插入之。
有序表的合并:★★★
算法 2.2:LA=(3,5,8,11) LB=(2,6,8,9,11,15,20)
则 LC=(2,3,5,6,8,9,11,11,15,20)
算法思想:首先创建一个空表 LC,通过比较指针 pa 和 pb 所指向的元素的值,依次从 LA
1 / 13
或 LB 中“摘取”元素值较小的结点插入到 LC 表的最后,当其中一个表变空是,说明此表的
元素已归并完,则只要将另一个非空表的剩余结点依次插入在 LC 表的最后即可。
线性链表:
线性链表的插入:插入元素师,指针的指向变化:
上述指针修改用语句描述即为:s->next=p->next; p->next=s;
单链表的插入:★★★
void insertnode(linklist head,datetype x,int i){
listnode * p,*q;
p=getnode(head,i-1);
if(p==NULL)
error(〝position error〞);
q=(listnode *)
malloc(sizeof(listnode));
q–>data=x;
q–>next=p–next;
p–>next=q;
}
课本中:
s=new LNode;
s->data =e;
s->next=p->next;
p->next=s;
线性链表的删除:删除元素,指针的指向变化:
上述指针修改用语句描述即为:p->next=p->next->next;
单链表的删除:★★★
void deletelist(linklist head, int i)
{ listnode * p, *r;
p=getnode(head,i-1);
if(p= =NULL ||
p–>next= =NULL)
return ERROR;
r=p–>next;
p–>next=r–>next;
free( r ) ;}
课本中:
q=p->next;
p->next=q->next;
2 / 13
单链表特点:
它是一种动态结构,整个存储空间为多个链表共用;
不需预先分配空间;
指针占用额外存储空间;
不能随机存取,查找速度慢。
第三章 栈和队列
栈的类型定义:
栈(Stack)是限制在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为
栈顶(Top),另一端为栈底(Bottom)。当表中没有元素时称为空栈。
假设栈 S=(a1,a2,a3,…an),则 a1 称为栈底元素,an 为栈顶元素。栈中元素按
a1,a2,a3,…an 的次序进栈,退栈的第一个元素应为栈顶元素。即,栈的修改是按后
进先出的原则进行的。因此,栈称为后进先出表(LIFO)。
栈的进栈、出栈顺序:
例:★★★
对于一个栈,给出输入项 A、B、C,如果输入项序列由 ABC 组成,试给出所有可能的输
出序列。
A 进 A 出 B 进 B 出 C 进 C 出 ABC
A 进 A 出 B 进 C 进 C 出 B 出 ACB
A 进 B 进 B 出 A 出 C 进 C 出 BAC
A 进 B 进 B 出 C 进 C 出 A 出 BCA
A 进 B 进 C 进 C 出 B 出 A 出 CBA
不可能产生输出序列 CAB
栈的应用:数值转换[大题]
算法思想:首先将按照上述计算过程中得到的八进制树的各位依次进栈,然后将栈中的八
进制数依次出栈输出,输出结果就是该是十进制数转换得到的八进制数。
N=(N div d)×d + N mod d (其中:div 为整除运算,mod 为求余运算)
例如 (1348)10=(2504)8,其运算过程如下:
N N div 8 N mod 8
1348 168 4
168 21 0
21 2 5
2 0 2
算法:【此为课件算法同课本算法一致】★★★
void conversion() {
initstack ( s );//构造空栈
scanf ( “ % ” , n);
while( n ){
push ( s , n % 8 );
n = n / 8;
}
while( ! Stackempty ( s )){//当栈非空时
pop ( s , e );
printf ( “ % d ” , e );}}//conversion
队列的类型定义:
3 / 13
剩余12页未读,继续阅读
资源评论
huayuya123
- 粉丝: 26
- 资源: 31万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Typescript和PHP的编程知识储备库设计源码 - study-php
- Screenshot_2024-05-28-11-40-58-177_com.tencent.mm.jpg
- 基于Dart的Flutter小提琴调音器APP设计源码 - violinhelper
- 基于JavaScript和CSS的随寻订购网页设计源码 - web-order
- 基于MATLAB的声纹识别系统设计源码 - VoiceprintRecognition
- 基于Java的微服务插件集合设计源码 - wsy-plugins
- 基于Vue和微信小程序的监理日志系统设计源码 - supervisionLog
- 基于Java和LCN分布式事务框架的设计源码 - tx-lcn
- 基于Java和JavaScript的茶叶评级管理系统设计源码 - tea
- IMG_5680.JPG
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功