软件设计师考试复习笔记下午部分
软考软件设计师知识点速记
软考软件设计师知识点速记一、计算机组成与体系结构。
1. 数据的表示。
- 进制转换:- 二进制转十进制:按权展开求和,例如(101.1)_2 = 1×2^2+0×2^1 +1×2^0+1×2^-1=4 + 0+1+0.5 = 5.5。
- 十进制转二进制:整数部分除2取余,小数部分乘2取整。
- 原码、反码、补码:- 原码:最高位为符号位,0表示正数,1表示负数,其余位表示数值的绝对值。
- 反码:正数的反码与原码相同,负数的反码是在原码的基础上,符号位不变,其余位取反。
- 补码:正数的补码与原码相同,负数的补码是其反码加1。
2. CPU的组成与功能。
- 运算器:主要进行算术运算和逻辑运算,包括算术逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等。
- 控制器:负责指令的读取、译码和执行,包括程序计数器(PC)、指令寄存器(IR)、指令译码器等。
- CPU的性能指标:主频、字长、缓存(Cache)大小、核心数等。
主频越高,CPU处理速度越快;字长越长,能处理的数据精度越高;缓存越大,CPU访问数据的速度越快;多核心可以并行处理多个任务。
3. 存储系统。
- 层次结构:寄存器 - Cache - 主存 - 辅存。
寄存器速度最快,容量最小;辅存速度最慢,容量最大。
- 主存:- 随机存取存储器(RAM):分为静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)。
SRAM速度快、成本高、集成度低,常用于Cache;DRAM速度慢、成本低、集成度高,是主存的主要组成部分。
- 只读存储器(ROM):数据在制造时写入,断电后数据不丢失,常用于存储BIOS等固定程序。
- 虚拟存储器:利用程序的局部性原理,将主存和辅存结合起来,为用户提供比实际主存容量大得多的虚拟存储空间。
4. 输入/输出系统。
- 接口:用于连接主机和外部设备,如并行接口、串行接口等。
- 中断:是指CPU在执行程序的过程中,遇到外部设备或内部异常事件时,暂停当前程序的执行,转而去处理该事件的一种机制。
软考中级软件设计师笔记
软考中级软件设计师笔记软考中级软件设计师是一门考试,针对的是具有一定软件开发经验和能力的专业人员,旨在考察其在软件设计领域的知识和技能。
本篇笔记将从以下几个方面对中级软件设计师考试内容进行整理。
一、软件生命周期软件生命周期包括需求分析、设计、编码、测试、运维等多个阶段。
在软件设计师的考试中,需要掌握软件生命周期的各个阶段,了解每个阶段的目标和核心要点,根据实际开发经验对每个阶段的任务和工作内容进行调整和优化。
在需求分析阶段,需要掌握用户需求收集、需求分析、需求变更管理等技能。
在设计阶段,需要掌握软件架构设计、模块划分、业务流程设计等技能。
在编码和测试阶段,需要掌握编程语言、调试工具、测试方法和技巧等,保证代码质量和程序的正确性。
在软件运维阶段,需要掌握运维流程规范、监控手段、故障排除等技能,为软件正常运行提供支持和服务。
二、软件设计原则软件设计原则是软件设计师必须掌握的重要知识点之一。
其中最常见的几个原则如下:1.单一职责原则:每个类都应该只有一个责任,单一职责的类更容易修改、测试和复用。
2.开闭原则:软件实体应该对扩展开放,对修改关闭,即在变化的时候尽量不用修改代码来实现。
3.里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能。
4.依赖倒置原则:高层模块不应该依赖低层模块,两者应该通过抽象来实现解耦。
5.接口隔离原则:多个专门的接口比一个单一的总接口好,客户端不应该依赖它不需要的接口。
三、设计模式设计模式是一种解决软件设计中常见问题的经验总结。
设计模式可以提高代码的复用性、可维护性和可伸缩性。
在软件设计师考试中,常见的设计模式包括:1.工厂模式:将对象的创建从类的实现中分离出来,由工厂类去负责对象的创建和管理。
2.单例模式:保证一个类只有一个实例,在需要的时候提供全局访问点。
3.代理模式:使用代理对象作为其他对象的接口,以控制对这个对象的访问。
4.装饰者模式:动态地给一个对象添加额外的职责,比继承灵活。
软件设计师考试复习笔记下午部分
软件设计师考试复习笔记(一)下午部分一.数据流图设计1. 逻辑数据流图与物理数据流图的区别:逻辑数据流图说明应该具有那些加工而不关心这些加工是如何实现的;物理数据流图则要说明这些加工是如何实现的。
2.补充和完善数据流:根据数据流平衡原则,即父图和子图的输入和输出流一致每个加工至少有一个输入输出流3.找出多余的文件:如果一个文件仅仅作用于一个加工,即和该文件有关的输入和输出只涉及到一个加工,那么该文件可以作为局部文件出现在该加工的子图中,在父图中可以省略。
如果没有细化图(子图),则不能省略。
二.数据库设计1.SQL语句exists (sql 返回结果集为真)not exists (sql 不返回结果集为真)如下:表AID NAME1 A12 A23 A3表BID AID NAME1 1 B12 2 B23 2 B3表A和表B是1对多的关系 A.ID => B.AIDSELECT ID,NAME FROM A WHERE EXIST (SELECT * FROM B WHERE A.ID=B.AID) 执行结果为1 A12 A2原因可以按照如下分析SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1) --->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2) --->SELECT * FROM B WHERE B.AID=2有值返回真所以有数据SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3) --->SELECT * FROM B WHERE B.AID=3无值返回真所以没有数据NOT EXISTS 就是反过来SELECT ID,NAME FROM A WHERE NOT EXIST (SELECT * FROM B WHERE A.ID=B.AID)执行结果为3 A3===========================================================================EXISTS = IN,意思相同不过语法上有点点区别,好像使用IN效率要差点,应该是不会执行索引的原因SELECT ID,NAME FROM A WHERE ID IN (SELECT AID FROM B)NOT EXISTS = NOT IN ,意思相同不过语法上有点点区别SELECT ID,NAME FROM A WHERE ID NOT IN (SELECT AID FROM B)下面是普通的用法:SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差别:IN:确定给定的值是否与子查询或列表中的值相匹配。
软件设计师下午知识点
软件设计师下午知识点在软件设计师的职业中,下午是一个关键时间段,因为这个时候通常需要处理复杂的问题和进行重要的决策。
下午知识点的了解和掌握对软件设计师来说至关重要。
本文将介绍一些软件设计师下午需要掌握的知识点,帮助软件设计师提高工作效率和质量。
一、需求分析需求分析是软件设计的首要步骤,下午是进行需求分析的关键时间。
在这个阶段,软件设计师需要与项目团队和客户密切合作,确保对需求的准确理解和分析。
具体来说,下午需掌握以下几点:1. 掌握使用案例图和用例规约来描述和验证系统需求。
使用案例图可以将系统的功能和用户之间的交互可视化,用例规约则详细描述每个用例的输入、处理和输出。
2. 熟悉需求工具和技术,如面向对象分析、统一建模语言(UML)和流程图等。
这些工具和技术有助于软件设计师更好地理解和传递需求信息。
3. 确保需求的一致性和完整性,避免遗漏关键需求。
软件设计师需要与项目团队和客户沟通,明确每个需求的具体细节和优先级。
二、系统设计系统设计是将需求转化为可执行代码的过程,下午是系统设计的重要时间段。
软件设计师需要具备以下知识点:1. 掌握常用的系统设计模式,如单例模式、工厂模式、观察者模式等。
这些模式可以帮助软件设计师解决常见的设计问题,提高代码的可复用性和可维护性。
2. 熟悉软件架构设计原则和方法,如分层架构、模块化设计和面向接口编程等。
良好的架构设计可以降低系统的复杂性,提高系统的可靠性和性能。
3. 理解系统的扩展性和可维护性要求,考虑未来需求的变化和系统的演化。
软件设计师需要预留足够的余地,确保系统能够适应未来的变化。
三、编码和调试下午是软件设计师进行编码和调试的时间段。
编码和调试的质量直接影响软件系统的稳定性和性能。
软件设计师需要掌握以下知识点:1. 熟悉编程语言和开发工具,如Java、C++、Eclipse等。
掌握各种语言的语法和常用库函数,能够高效编写代码。
2. 理解代码的可读性和可维护性要求,遵循良好的编码风格和命名规范。
软考软件设计师下午题答题技巧分享
软考软件设计师下午题答题技巧分享下午试题,是软考每个科目的一大难点,除了掌握对应的知识点外,也要掌握一些解题技巧。
下面为你分享软件设计师考试下午题答题技巧,供你参考。
软件设计师考试下午题答题技巧一、前三题较简单,送分题:尽量将题目理解透彻再做题,否则有可能遗漏说明中某些关键点。
1.数据流图1.1 数据流图绘制三原则:既是查找DFD错误的依据,也是补充丢失的数据流的基础。
(1)一个加工的输出数据流不与输入数据流同名,即使它们的组成成分相同。
(2)每个加工必须既有输入数据流,又有输出数据流。
(3)所有的数据流都必须以一个加工开始,或以一个加工结束。
除此之外,数据流平衡也是一种分析方法,再有,看加工是否需要读取或者写入存储文件。
1.2 数据词典。
(1)*+*:组成。
(2)[*|*]:分为。
2.关系模式2.1 实体联系图和关系模式的转换原则:(1)1:1联系。
将一方的主码增加到另一方实体对应的关系中。
(2)1:N或1:*联系。
将一端实体的主码加入到N端实体对应的关系中。
(3)M:N或*:*联系。
独立成一个关系模式,取与该联系相关联的实体的码及联系自有的属性构成。
2.2 E-R图外键。
(1)一方的主码。
(2)一端实体的主码。
(3)与该联系相关联的实体的码。
除此之外,还可能包含其它关系模式的主码。
2.3 1NF关系模式的主要问题。
(1)数据冗余。
(2)引起修改操作的不一致性。
(3)插入异常。
(4)删除异常。
3.面向对象建模中关联多重度(1)宁多不少。
(2)区分0..*和1..*,2..*。
二、后三题难度都差不多:即使不能安全搞清楚编程者的思路,也能做对其中一部分,坚持做就好。
选题十分重要:有一定把握(熟悉算法)就选数据结构,否则选面向对象程序设计。
4.流程图填空“初始化数据”:一般选择利用倒推法,未知的数据即初始数据。
动态规划算法最好列出子问题最优解的计算公式,这样比较容易答题。
5.数据结构或者算法填空,对算法(譬如链表栈、贪心、快速排序、回溯等)的考察越来越深入。
软件设计师刷题笔记
软件设计师刷题笔记一、刷题就像打怪升级我呀,开始刷软件设计师的题时,那感觉就像是游戏里的小菜鸟开始打大怪兽。
每一道题都是一个小怪兽,等着我去征服。
比如说有那种关于算法复杂度计算的题,就像面对一个隐藏了很多机关的大boss,得小心翼翼地分析每个步骤,时间复杂度、空间复杂度,这都是攻克它的关键技能点。
你要是想在软件设计师这个游戏里“升级”,那刷题是必不可少的,不然你只能永远在新手村徘徊,眼巴巴看着别人一路披荆斩棘,成为大神,你甘心吗?二、笔记——我的秘密武器我跟你说,刷题笔记可是我的秘密武器。
就像武侠小说里大侠的内功心法,别人看不到,但关键时刻能发挥巨大威力。
每次遇到那种特别绕的数据库设计题,我就把解题思路详细地记在笔记上。
像“如何建立多表之间的关系”,这就好比是在构建一个江湖门派的关系网,谁是掌门,谁是弟子,相互之间的联系可不能乱。
我的笔记里还会写上一些自己容易犯错的点,这就像是在自己的练武秘籍里特别标注的陷阱区域,下次再遇到就能轻松避开,不至于再掉进同一个坑里摔得鼻青脸肿。
三、和朋友一起刷题的乐趣我有个朋友也在考软件设计师,我们经常一起刷题。
这就像两个人一起在黑暗的山洞里探险,互相照应。
有时候他会遇到那种关于编程语言语法的难题,像在茂密的丛林里迷了路一样。
我就会根据我的刷题经验给他指点迷津,“嘿,你看这里,这个语法就像是这个丛林里的特殊路标,你按照这个规则走就能走出去啦。
”然后我遇到那种网络拓扑结构的题,他又能给我讲得头头是道。
我们互相分享笔记,他的笔记里有一些关于软件测试的独特见解,我看了就像是发现了新大陆一样兴奋。
这种互相帮助、共同进步的感觉,真的很棒,你难道不想有这样一个一起刷题的伙伴吗?四、刷题中的挫败与成长哎呀,刷题哪有一帆风顺的呀。
有时候我被那些软件工程的题搞得焦头烂额,就像一个迷失在沙漠里的旅人,怎么都找不到方向。
那些概念像沙子一样迷得我眼睛都睁不开。
比如说软件生命周期的各个阶段,感觉每个阶段都在跟我作对,我都怀疑自己是不是这块料了。
希赛软考笔记(1)
软件设计师学习笔记(自己整理)1、下午主要考题:数据流图:指出错误的数据流;缺少数据流;数据字典;加工访问文件;外部实体。
面向对象程序设计:UML(统一建模语言,共有9种图形)中的类图(类的关系),顺序图。
数据库设计:E-R图(实体之间的关系,实体之间联系的几种类型,几种类型如何转化成相应的关系模式);关系模式(必考和分值集中的考点,主要考察关系的属性,主键和外键);SQL;数据库的完整性(实体完整性,数据完整性,参照完整性)。
算法设计/C程序设计:关键路径;最短路径;回溯法;散列法;观察者模式;多叉平衡查找树。
(几种程序设计中考察的难易程度最大,考察算法)C++程序设计:单身模式;继承;观察者模式;类的定义。
Java程序设计:异常处理;继承;观察者模式;类的定义。
Web service:信息加密:2、数据流图的设计原则例题:实体与实体之间是不能有数据流的;数据流必须与加工有关;存储与存储之间也是不能有数据流的;实体与数据存储之间也不能有数据流;对一个加工而言,输入与输出数据流的名字不能相同,且要平衡,即有输入也要有输出;父图与子图的守恒原则。
3、操作系统例题讲解:题目答案为:D A知识要点:并行使用I/O设备即可以同时使用该设备;可剥夺方式优先级的进程调度方案即优先级高的优先使用cup或是i/o设备。
4、数据库设计例题讲解答案:问题一:m n 1 n m n问题二:读者ID 图书ID 读者ID ISBN号问题三:读者ID ;ISBN号;图书ID, ISBN号;读者ID 图书ID,读者ID 图书ID 借出时间;读者ID ISBN号预约时间,读者ID ISBN号图书ID考题分析:E-R图当中各个实体的联系类型,写出关系的属性,找出它的主键和外键5、数据结构之最小生成树:6、多媒体名称产生年份技术特点应用范围压缩对象1993.8 每秒1.5M MP3(MPEG-1第三层)视频压缩MPEG-1MPEG-1994 3-100M/S 数字电视,高清电视视频压缩2MPEG-1999.2 内容交互性,访问性,压缩性交互式游戏,广播电视,视频压缩4 Internet网MPEG-1998.10 多种音频和视频的描述智能多媒体,教育领域视频压缩7将不同的标准技术进行融合媒体数据的存储,隐私保护视频压缩MPEG-21MPEG-7:多媒体内容描述接口BMP 位图占空间大DIB 位图支持多种平台占空间大支持多种平台PCX 压缩功能DIF 矢量图放大图形不失真WMF 小图标,矢量图小微软GIF 网页上颜色少,256色小,质量高,动画JPEG 24位真彩图质量高PSD PSCDR CDRPCD 柯达公司WAVE 计算的音频的文件未经过压缩与bmp相似MOD 音色的样本和音频文件4,16,32个声段MP3 MPEG-1-V3Real Audio 网速传输压缩率高CD Audio 保存原声质量太大,不能被编辑MIDI 占空间最小不能记录人的声音播放音乐不能播放声音ASF:使用的是MPEG-4标准,微软公司提出。
软件设计师考试笔记
软件设计师考试笔记作为软件设计师,你需要掌握以下内容:1. 软件设计原则:- 单一职责原则(SRP):每个类应该只有一个变化的原因。
- 开放封闭原则(OCP):软件实体(类、模块、函数等)应该是可扩展的,而不是可修改的。
- 依赖倒转原则(DIP):高层模块不应依赖于低层模块,二者都应该依赖于抽象。
- 接口隔离原则(ISP):客户端不应该依赖它不需要的接口。
- 迪米特法则(LoD):一个对象应该尽可能少地与其他对象发生相互作用。
2. 软件设计模式:- 单例模式:确保一个类只有一个实例,并提供一个全局访问点。
- 工厂模式:通过一个工厂类来创建对象,而不是直接调用构造函数。
- 观察者模式:定义了对象之间的一对多依赖关系,当一个对象的状态发生变化时,它的所有依赖者都会收到通知并自动更新。
- 装饰器模式:通过动态地给一个对象添加一些额外的职责,而不需要修改原始对象的结构。
- 策略模式:定义了一系列的算法,并使它们可以互相替换,使得算法可以独立于客户端而变化。
3. UML建模:- 类图:描述了类之间的关系、属性和方法。
- 时序图:描述了对象之间的交互顺序。
- 用例图:描述了系统和外部实体之间的交互。
- 状态图:描述了对象在不同状态下的行为。
4. 数据库设计:- 根据需求分析设计数据库表结构。
- 设计合适的主键、外键和索引。
- 优化数据库查询性能,避免冗余数据和复杂的关联查询。
5. 软件架构设计:- 划分系统模块,确定各个模块之间的关系和接口。
- 选择合适的架构风格,如客户端-服务器、分层、微服务等。
- 考虑系统的可伸缩性、灵活性和可维护性。
除了以上内容,还需要了解编程语言(如Java、C++、Python等)的基础知识、数据结构和算法、网络通信和安全等方面的知识。
考试前,建议多做练习题和项目实战,加深对知识的理解和应用能力。
软件设计师考试知识点总结
软件设计师考试知识点总结一、知识概述《软件设计师考试知识点》①基本定义:软件设计师考试涵盖的知识很多,从计算机基础知识、程序设计语言到软件设计的方法、算法分析等。
简单说就是考查是否具备软件设计各个方面的能力的考试内容的集合。
②重要程度:这在计算机相关学科和软件行业中非常重要。
它是衡量一个人能否胜任软件设计工作、进行软件项目开发的基础。
很多软件企业把这个考试成绩作为招聘和技术能力评估的参考。
③前置知识:需要提前掌握基础的计算机理论,像计算机组成原理(就是计算机硬件结构那一套,CPU、内存、硬盘怎么协同工作),数据结构(如数组、链表是怎么存储和操作数据的),操作系统(比如系统怎么管理进程、内存等)编程语言(比如C语言或者Java的基本语法、数据类型等)。
④应用价值:在实际应用中,通过这个考试意味着你有能力设计出高效、安全、可靠的软件。
就拿开发一款手机APP来说,懂得软件设计师的知识,你就能设计出合理的软件架构,让用户使用起来更流畅、不卡顿,而且安全隐私也能得到保障,还可以合理利用手机资源,不会让电池消耗太快等。
二、知识体系①知识图谱:软件设计师知识体系就像一颗大树,基础知识像树根,支撑整个体系。
程序设计语言、数据结构、算法等知识相当于树干,是主体部分。
软件设计方法、软件项目管理知识是树枝,延伸到各个应用方面。
最后的软件工程、面向对象分析设计这些就是树叶,是整体知识体系中的具体应用成果。
②关联知识:与很多计算机知识紧密相连,像网络知识(如果设计的软件要联网,就得懂网络协议等网络知识),数据库知识(软件可能要存储数据,那数据库的设计、操作就得懂得)。
③重难点分析:掌握的难点在于知识点繁多且复杂。
比如说算法和数据结构这部分,有各种各样的算法,像排序算法就有冒泡排序、快速排序一大堆,它们的原理、复杂度分析这些很让人头疼。
关键点在于清楚每个知识点之间的逻辑联系,不能孤立地看每个知识点。
④考点分析:在考试中很重要,考试会从各个知识点进行考查。
软件设计师中级每章节知识点笔记
软件设计师中级每章节知识点笔记软件设计师中级这门考试,知识点那叫一个多,就像繁星点点,让人有点眼花缭乱。
不过别怕,咱们一起来捋一捋每章节的重点,就像梳理一团乱麻,慢慢就能理出头绪。
先说第一章,那简直是软件设计的基石。
好比盖房子,这第一章就是打地基的部分。
里面的软件开发方法,什么瀑布模型、敏捷开发,就像是不同的盖房策略。
瀑布模型,一步一步,规规矩矩,就像老老实实一砖一瓦盖房子;敏捷开发呢,灵活多变,快速响应,如同根据实时情况随时调整盖房的节奏和方式。
你说,要是不把这些搞清楚,后面的设计能靠谱吗?再看第二章,数据结构和算法,这可是软件设计的灵魂所在。
想象一下,数据结构就像是一个个不同形状的盒子,算法呢,则是把东西放进盒子和取出盒子的方法。
比如数组,整整齐齐排一排,找东西方便;链表呢,灵活得很,插入删除轻松。
算法更是神奇,排序算法里的冒泡排序,一个个数据就像水里的泡泡,一点点往上冒;快速排序,像个神奇的魔术师,瞬间让数据变得有序。
要是不懂这些,软件运行起来不就像没头的苍蝇乱撞?第三章的操作系统知识,那是软件运行的大舞台。
进程管理、内存管理,这不就像是舞台上的演员和场地的安排吗?进程调度,决定哪个演员先上台表演;内存分配,好比给演员划分表演区域。
如果安排不好,那不得乱套?第四章的数据库知识,就像一个巨大的仓库。
数据库设计、SQL 语句,这都是管理仓库的工具。
合理的设计让仓库井井有条,SQL 语句则是我们取货存货的指令。
不然,仓库里的东西乱七八糟,找都找不到,那还怎么用?第五章的多媒体知识,就像是给软件增添色彩的画笔。
音频、视频、图像,让软件变得丰富多彩。
就像一个平淡的房间,有了这些多媒体元素,瞬间变得生动有趣。
第六章的计算机网络知识,是软件与外界沟通的桥梁。
IP 地址、网络协议,就像是桥的架构和通行规则。
没有这些,软件就像被困在孤岛上的人,与世隔绝。
第七章的软件工程知识,那是软件设计的指导手册。
需求分析、设计模式,都是让软件变得更完美的法宝。
软件设计师考试下午试题复习笔记二
软件设计师考试下午试题复习笔记二三、UML设计1.用例图间关系:包含,扩展2.类图间关系:依赖表示类之间的使用关系虚线+箭头泛化表示一般与特殊的关系直线+空心三角聚集是特殊的关联,表示整体与部分的关系直线+空心菱形组合是很强的关联,而且整体与部分的生存周期是一致的直线+实心菱形实现接口虚线+空心三角四、程序流程图(可不用复习)五、算法设计1.指针:一个存储地址的变量2.数组名存储的是,数组在申请空间时数组名存储该存储空间的首地址,因此也是指针。
当直接输出数组名是,其实是输出的是数组的首地址。
可以用指针的方式访问数组。
3.C语言中,当形参是普通变量时,传递的是实参的值,当形参是指针时,传递的是指针变量的值,但自身的改变不会传递给实参。
4.线性表:除第一个外,集合中每个数据元素均有且仅有一个前驱,除最后一个外,集合中每一个元素都有且仅有一个后继。
线性表的节点一定是同一类型的数据。
5.顺序存储:逻辑关系上相邻的两个元素在物理位置上也是相邻。
A的存储位置计算公式:loc(ai)=loc(a1)+(i-1)*1顺序存储的缺点:线性表的大小固定,浪费大量的存储空间,不利于节点的增加或减少;执行线性表的插入和删除操作要移动其他元素,不够方便。
6.链式存储:单链表循环链表双向链表线性表链式存储用链表存储线性表,头指针指向第一个节点。
缺点:由于要存储地址指针,浪费空间7.队列:一种先进先出(FIFO)的线性表,队列只允许在一端(对尾)进行插入,另一端(对首)进行删除运算的线性表。
8.栈:仅在表尾进行插入或删除的一种LIFO线性表。
表尾是栈顶,表头是栈底。
9.构造哈夫曼树:定义:树的带权路径最短的树(树中所有叶子节点的带权路径长度之和)构造方法:每次挑选两个根节点最小的树作为左右子树构造一棵新的二叉树,且设树的根节点的权为左右子树根节点的权的和,新形成的二叉树又参与下一轮的挑选(挑选两个根节点最小的树)。
10.哈夫曼编码:将要传送的字符串构造成哈夫曼树,再将度为2的节点的左分支路径赋值为0,右分支赋值为1.从根节点到各个叶子节点的路径上的0,1值就构成了叶子节点(每一个字符)的编码。
软件设计师中级下午题总结
软件设计师中级下午题总结
在软件设计师中级下午题中,我面对了一系列与软件设计相关的问题和情境,
下面是我对这些题目的总结。
首先,本次考试涵盖了软件设计的多个方面,包括需求分析、系统设计和架构
设计。
这些问题要求我考虑软件系统的整体架构,从需求收集开始,根据用户需求和功能需求进行分析,然后设计出适合的系统架构。
其次,本次考试强调了对面向对象设计原则的理解和应用。
我需要考虑到继承、封装和多态等概念,并在设计过程中充分应用这些原则。
同时,我还需要考虑类的职责和关系,确保设计出的类具有高内聚性和低耦合性。
此外,本次考试还覆盖了数据结构和算法的应用。
我需要分析问题,并考虑使
用适当的数据结构和算法来解决。
在这个过程中,我要注意选择合适的数据结构来存储和操作数据,同时使用高效的算法来提高系统的性能。
在解答题目的过程中,我发现理解问题的关键和准确把握题目要求非常重要。
我始终保持思维清晰,仔细阅读题目,确保回答准确、简洁、清晰。
同时,我还学会了在时间紧迫的情况下,合理安排时间,控制每个题目的答题时间,以确保在规定时间内完成所有任务。
总的来说,软件设计师中级下午题是一个全面考察软件设计能力的考试,涵盖
了多个方面的知识和技能。
通过这次考试,我不仅加深了对软件设计的理解,也发现了自己在某些方面的不足,这将激励我继续学习和提升自己的软件设计能力。
软件设计师考试笔记考点(知识点)归纳总结
1、软件开发模型(1)原型法--适用于需求不明确的开发(2)瀑布模型--适用于需求已经明确的开发(3)螺旋模型--适用于风险较大的大中型项目(4)喷泉模型--主要用于描述面向对象的开发过程2、成本估算时,COCOMOⅡ方法以规模作为成本的主要因素,考虑多个成本驱动因子。
3、高内聚低耦合是软件设计的一个原则,其中内聚指模块内部各元素之间联系的紧密程度,也就是代码功能的几种程度。
耦合指模块之间互相联系的紧密程度。
4、通信内聚:如果一个模块的所有成分都操作同一个数据集或生成同一个数据集,则称为通信内聚;5、巧合内聚:也称偶然内聚,模块内各部分之间没有联系,或即使有联系,也很松散,是内聚程序最低的模块。
6、过程内聚:某模块内涉及多个功能,这些功能必须以特定的次序执行,则该模块的内聚类型为过程内聚7、数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递。
例如模块A将学生信息,即学生姓名、学号、手机号等放到一个结构体中,传递给模块B,则称模块A 和B之间的耦合类型为数据耦合8、CMM模型将软件过程的成熟度分为5各等级(1)初始级:软件过程的特点是无秩序的,有时甚至是混乱的。
项目成功往往依赖于个人。
(2)可重复级:已经建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。
(3)定义级:用于管理和工程的的软件过程均已文档化、标准化,并形成整个软件组织的标准软件过程。
(4)管理级:软件过程和产品质量有详细的度量标准。
(5)优化级:通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够持续性地进行过程改进。
9、软件测试(1)白盒测试又称结构测试,主要用于单元测试阶段,测试者完全知道程序的结构和处理算法(2)黑盒测试又称为功能测试,主要用于集成测试盒确认测试阶段。
(3)α测试是用户在开发者的场所由开发者指导完成的测试(4)β测试是在一个或多个用户的现场由该软件的最终用户实施的,开发者通常不在现场。
软件设计师考试笔记考点(知识点)归纳总结
1、软件开发模型(1)原型法--适用于需求不明确的开发(2)瀑布模型--适用于需求已经明确的开发(3)螺旋模型--适用于风险较大的大中型项目(4)喷泉模型--主要用于描述面向对象的开发过程2、成本估算时,COCOMOⅡ方法以规模作为成本的主要因素,考虑多个成本驱动因子。
3、高内聚低耦合是软件设计的一个原则,其中内聚指模块内部各元素之间联系的紧密程度,也就是代码功能的几种程度。
耦合指模块之间互相联系的紧密程度。
4、通信内聚:如果一个模块的所有成分都操作同一个数据集或生成同一个数据集,则称为通信内聚;5、巧合内聚:也称偶然内聚,模块内各部分之间没有联系,或即使有联系,也很松散,是内聚程序最低的模块。
6、过程内聚:某模块内涉及多个功能,这些功能必须以特定的次序执行,则该模块的内聚类型为过程内聚7、数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言的值传递。
例如模块A将学生信息,即学生姓名、学号、手机号等放到一个结构体中,传递给模块B,则称模块A 和B之间的耦合类型为数据耦合8、CMM模型将软件过程的成熟度分为5各等级(1)初始级:软件过程的特点是无秩序的,有时甚至是混乱的。
项目成功往往依赖于个人。
(2)可重复级:已经建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。
(3)定义级:用于管理和工程的的软件过程均已文档化、标准化,并形成整个软件组织的标准软件过程。
(4)管理级:软件过程和产品质量有详细的度量标准。
(5)优化级:通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够持续性地进行过程改进。
9、软件测试(1)白盒测试又称结构测试,主要用于单元测试阶段,测试者完全知道程序的结构和处理算法(2)黑盒测试又称为功能测试,主要用于集成测试盒确认测试阶段。
(3)α测试是用户在开发者的场所由开发者指导完成的测试(4)β测试是在一个或多个用户的现场由该软件的最终用户实施的,开发者通常不在现场。
软考下午考题的知识点
软考下午考题的知识点
软考下午的考试科目比较多,考试的知识点也是相对广泛的。
以下是几个可能的考点:
1. 网络技术:可能包括网络协议、网络安全、网络设备配置和管理等。
2. 数据库管理:可能涉及数据库设计、数据库安全、数据库应用开发等。
3. 软件开发与维护:可能包括软件开发过程、软件测试、软件版本控制、软件部署和运维等。
4. 项目管理:可能涉及项目计划、项目进度控制、项目质量管理等。
5. 数据结构和算法:可能涉及常见的数据结构、算法设计、算法优化等。
6. 信息安全:可能包括网络安全、密码学、身份认证等。
7. 软件法律法规与标准:可能涉及软件相关的法律法规、知识产权保护等。
请注意,这些只是一些可能的考点,具体考试内容会根据具体的考试科目和考试级别有所不同。
建议您提前查阅相关的考试大纲,了解具体的考试内容和要求。
软件设计师中级下午题知识点总结
软件设计师中级下午题知识点总结一、数据流图(DFD)相关(3题)1. 题目。
- 某基于网络的文件处理系统,用户通过浏览器向服务器发出文件处理请求,服务器根据请求对文件进行处理,并将处理结果返回给用户。
其顶层数据流图如下,请补充完整该数据流图中的外部实体、数据存储和加工。
- 解析:- 外部实体:在这个系统中,用户通过浏览器与系统交互,所以“用户”是一个外部实体;另外,由于文件可能存储在文件系统或数据库等地方,这里假设存在一个“文件存储系统”作为外部实体(如果题目有更详细的存储相关描述,可以进一步细化,如数据库管理系统等)。
- 数据存储:考虑到文件处理系统,必然存在一个存储文件相关信息的地方,可命名为“文件库”。
- 加工:根据描述,服务器要对文件进行处理,这里可以有“文件请求处理”加工,负责接收用户请求并进行初步处理;“文件操作加工”,负责对文件库中的文件进行实际的操作(如读取、修改等);“结果返回加工”,负责将处理后的结果返回给用户。
2. 题目。
- 根据以下描述绘制数据流图。
某高校学生选课系统,学生登录系统后查询课程信息,根据课程信息进行选课操作。
系统管理员负责维护课程信息,包括课程的添加、删除和修改。
- 解析:- 外部实体:有“学生”和“系统管理员”。
- 数据存储:需要有一个“课程信息库”来存储课程相关信息。
- 加工:对于学生操作,有“课程信息查询加工”和“选课加工”;对于管理员操作,有“课程信息维护加工”,这个加工可以进一步细分为“课程添加子加工”“课程删除子加工”“课程修改子加工”。
- 数据流:学生到“课程信息查询加工”有“查询请求”数据流,“课程信息查询加工”到“课程信息库”有“查询操作”数据流,“课程信息库”到“课程信息查询加工”有“课程信息”数据流,“课程信息查询加工”到“选课加工”有“选定课程信息”数据流,“选课加工”到“课程信息库”有“选课操作”数据流;管理员到“课程信息维护加工”有“维护请求”数据流,“课程信息维护加工”到“课程信息库”有相应的“添加/删除/修改操作”数据流。
软件设计师备考笔记(文末复习资料分享)
软件设计师备考笔记(⽂末复习资料分享)软考学习笔记⼀、数据的表⽰R进制转⼗进制使⽤按权展开法⼆进制符号位:0代表正数,1代表负数⼆进制转⼋进制:按三位划分计算⼆进制转⼗六进制:按四位划分计算正数的原码、反码、补码相同负数的反码:在原码的基础上除符号位全部取反负数的补码:在反码的基础上+1负数的补码转原码:除符号位全部取反 +1移码:在补码的基础上将符号位取反减法运算:使⽤两个数的补码相加⼆、数值表⽰范围定点整数原码 -(2^n-1-1) ~ +(2^n-1-1)反码 -(2^n-1-1) ~ +(2^n-1-1)补码 -2^n-1 ~ +(2^n-1-1)移码 -2^n-1 ~ +(2^n-1-1)定点⼩数原码 -(1-2^-(n-1)) ~ +(1-2^-(n-1))反码 -(1-2^-(n-1)) ~ +(1-2^-(n-1))补码 -1 ~ +(1-2^-(n-1))移码 -1 ~ +(1-2^-(n-1))三、浮点的运算浮点数表⽰:N = 尾数 * 基数^指数运算过程:对阶》尾数运算》结果格式化特点⼀般尾数⽤补码,阶码⽤移码阶码的尾数决定数的表⽰范围,位数越多范围越⼤尾数的尾数决定数的有效精度,位数越多精度越⾼对阶时,⼩数向⼤数看齐对阶是通过较⼩数的尾数右移实现的浮点数存储⽅式:阶符 | 阶码 | 尾符 | 尾码四、计算机结构外设输⼊设备存储器辅助存储器输出设备主机主存储器CPU运算器算数逻辑单元ALU:数据的算数运算和逻辑运算累加寄存器AC:通⽤寄存器,为ALU提供⼀个⼯作区,⽤在暂存数据数据缓冲寄存器DR:写内存时,暂存指令或数据状态条件寄存器PSW:存状态标志与控制标志(争议:也有将其归为控制器的)控制器程序计数器PC :存储下⼀条要执⾏指令地址指令寄存器IR:存储即将执⾏的指令指令译码器 ID:对指令中的操作码字段进⾏分析解释时序部件:提供时序控制信号地址寄存器DR:记录当前指令地址五、计算机体系结构分类-Flynn单指令流单数据流SISD控制部分处理器主存模块均⼀个代表:单处理器系统单指令流多数据流SIMD处理器和主存模块多个关键特性:个处理器以异步的形式执⾏同⼀条指令代表:并⾏处理机,阵列处理机,超级向量处理机多指令流单数据流MISD控制器和主存模块多个被证明不可能,⾄少是不实际⽬前咩有,有⽂献称流⽔线计算机为此类多指令流多数据流MIMD控制部分,处理器,主存模块均为多个能够实现作业,任务,指令等各级全⾯并⾏多处理机系统,多计算机六、指令的基本概念⼀条指令就是机器语⾔的⼀个语句,它是⼀组有意义的⼆进制代码,指令的基本格式:操作代码字段|地址码字段操作码部分指出了计算机要执⾏什么性质的操作,如加法、减法、取数、存数等。
软件设计师下午题知识点
软件设计师下午题知识点一、知识概述《软件设计师下午题知识点》①基本定义:软件设计师下午题主要考查软件设计相关的实际能力,涵盖了从程序分析、数据库设计、数据结构运用到软件体系结构等多方面的知识。
就像是对各种软件设计里具体干活的技能测试。
②重要程度:在软件设计师考试中,下午题是非常关键的部分。
如果说上午题考查的是基础知识的广泛程度,下午题则着重于专业知识的实际应用能力,它能真正看出你是不是能把知识用起来的人。
③前置知识:那必须得先掌握程序设计语言基础知识,像基本的算法逻辑、数据类型这些;还有数据库的基本原理,如数据库的创建、查询语句等;数据结构里存数的方法等简单知识。
就好比盖房子得先有砖头水泥这些原材料知识一样。
④应用价值:在实际软件开发工作中,下午题考查的这些知识点,例如数据库设计,关系到软件里数据的有效存储和精准获取;软件的体系结构关系到软件整体的稳定性和可扩展性。
这就像汽车的发动机设计和车身架构,设计好了车才能跑得快又稳。
二、知识体系①知识图谱:下午题的知识点就像是软件设计这个大树上的分枝,程序设计、数据库设计、数据结构等互相交织,覆盖了软件设计从底层数据存储到高层软件架构的方方面面。
②关联知识:与上午题里考的基础知识紧密联系。
上午是理论基础,下午就是把理论变成实际的做法。
而且和软件工程整体流程里的需求分析、测试等环节都离不开,就像一条链子上的各个环节,缺了谁都不行。
③重难点分析:- 掌握难度:整体难度较大,涉及的知识面很广而且要求深度理解。
比如说对软件体系结构这块,要从多个层次思考,从设计模式到整体架构布局。
- 关键点:重点在实际运用知识,不能只靠死记硬背概念。
像数据库的范式在实际设计中的应用就不能仅仅背原理得看出怎么优化数据库结构。
④考点分析:- 在考试中的重要性:非常关键,有大量的分值分配,是决定能否通过考试的重要部分。
- 考查方式:通过分析现有程序、设计软件架构、数据库设计等实际问题来考查,就像给你个任务让你现场做个简单的软件方案一样。
软件设计师笔记
15. 程序设计语言分类:命令式/过程式(FORTRAN/C/PASCAL),函数式(Lisp/ML),面向对象(C++/SmallTalk/Java/C#),逻辑程序设计(Prolog)。
16. 解释型(接受所输入的用程序语言编写的源程序,然后直接解释执行,如Basic,现在的Java/C#也是一种半解释型的语言),翻译型(汇编和编译两类)
23. 实现VPN的关键技术是隧道技术、加解密技术、密钥管理技术和身份认证技术。VPN的关键技术是隧道技术,它是一种数据封装协议,也就是将一种协议封装在另一种协议中传输,从而实现被封装协议对封装协议的透明性。根据其工作的层次可分为以下两类:a. 二层隧道技术:包括PPP基础上的PPTP(点到点隧道协议)和L2F(二层转发协议)、L2TP(二层隧道协议)b. 三次隧道技术:主要代表是IPSec(IP层安全协议,它是IPv4和IPv6的安全标准)、移动IP协议和虚拟隧道协议(VTP)
10. 接受变化
这是一句老话了:唯一不变的只有变化。
你应该将所有系统将可能发生的变化以及潜在需求记录下来,以便将来能够实现(参见“Architecting for Change”,Thinking Objectively, May 1999)
通过在建模期间考虑这些假设的情况,你就有可能开发出足够强壮且容易维护的软件。设计强壮的软件是你最基本的目标。
12. 进程的五态模型:运行,就绪,阻塞,挂起。
13. 死锁的必要条件:互斥条件、保持和等待条件、不剥夺条件、环路等待条件。解决死锁的策略:死锁预防(破坏其必要条件)、死锁避免(银行家算法)、死锁检测、死锁解除(与死锁检测结合使用,采用剥夺方式)。
14. 存储分配算法:最佳适应法(最接近作业的自由区)、首次适应法(第一个可用的自由区)、最差适应法(选择最大的自由区)、循环首次适应法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件设计师考试复习笔记(一)下午部分一.数据流图设计1. 逻辑数据流图与物理数据流图的区别:逻辑数据流图说明应该具有那些加工而不关心这些加工是如何实现的;物理数据流图则要说明这些加工是如何实现的。
2.补充和完善数据流:根据数据流平衡原则,即父图和子图的输入和输出流一致每个加工至少有一个输入输出流3.找出多余的文件:如果一个文件仅仅作用于一个加工,即和该文件有关的输入和输出只涉及到一个加工,那么该文件可以作为局部文件出现在该加工的子图中,在父图中可以省略。
如果没有细化图(子图),则不能省略。
二.数据库设计1.SQL语句exists (sql 返回结果集为真)not exists (sql 不返回结果集为真)如下:表AID NAME1 A12 A23 A3表BID AID NAME1 1 B12 2 B23 2 B3表A和表B是1对多的关系 A.ID => B.AIDSELECT ID,NAME FROM A WHERE EXIST (SELECT * FROM B WHERE A.ID=B.AID) 执行结果为1 A12 A2原因可以按照如下分析SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=1) --->SELECT * FROM B WHERE B.AID=1有值返回真所以有数据SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=2) --->SELECT * FROM B WHERE B.AID=2有值返回真所以有数据SELECT ID,NAME FROM A WHERE EXISTS (SELECT * FROM B WHERE B.AID=3) --->SELECT * FROM B WHERE B.AID=3无值返回真所以没有数据NOT EXISTS 就是反过来SELECT ID,NAME FROM A WHERE NOT EXIST (SELECT * FROM B WHERE A.ID=B.AID)执行结果为3 A3===================================================================== ======EXISTS = IN,意思相同不过语法上有点点区别,好像使用IN效率要差点,应该是不会执行索引的原因SELECT ID,NAME FROM A WHERE ID IN (SELECT AID FROM B)NOT EXISTS = NOT IN ,意思相同不过语法上有点点区别SELECT ID,NAME FROM A WHERE ID NOT IN (SELECT AID FROM B)下面是普通的用法:SQL中IN,NOT IN,EXISTS,NOT EXISTS的用法和差别:IN:确定给定的值是否与子查询或列表中的值相匹配。
IN 关键字使您得以选择与列表中的任意一个值匹配的行。
当要获得居住在California、Indiana 或Maryland 州的所有作者的姓名和州的列表时,就需要下列查询:SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERE CategoryID = 1 OR CategoryID = 4 OR CategoryID = 5然而,如果使用IN,少键入一些字符也可以得到同样的结果:SELECT ProductID, ProductName FROM Northwind.dbo.Products WHERE CategoryID IN (1, 4, 5)IN 关键字之后的项目必须用逗号隔开,并且括在括号中。
下列查询在titleauthor 表中查找在任一种书中得到的版税少于50% 的所有作者的au_id,然后从authors 表中选择au_id 与titleauthor 查询结果匹配的所有作者的姓名:SELECT au_lname, au_fname FROM authors WHERE au_id IN (SELECT au_id FROM titleauthor WHERE royaltyper <50)结果显示有一些作者属于少于50% 的一类。
NOT IN:通过NOT IN 关键字引入的子查询也返回一列零值或更多值。
以下查询查找没有出版过商业书籍的出版商的名称。
SELECT pub_name FROM publishers WHERE pub_id NOT IN (SELECT pub_id FROM titles WHERE type = 'business')使用EXISTS 和NOT EXISTS 引入的子查询可用于两种集合原理的操作:交集与差集。
两个集合的交集包含同时属于两个原集合的所有元素。
差集包含只属于两个集合中的第一个集合的元素。
EXISTS:指定一个子查询,检测行的存在。
本示例所示查询查找由位于以字母B 开头的城市中的任一出版商出版的书名:SELECT DISTINCT pub_name FROM publishers WHERE EXISTS (SELECT * FROM titles WHERE pub_id = publishers.pub_id AND type ='business')SELECT distinct pub_name FROM publishers WHERE pub_id IN (SELECT pub_id FROM titles WHERE type = 'business')两者的区别:EXISTS:后面可以是整句的查询语句如:SELECT * FROM titlesIN:后面只能是对单列:SELECT pub_id FROM titlesNOT EXISTS:例如,要查找不出版商业书籍的出版商的名称:SELECT pub_name FROM publishers WHERE NOT EXISTS (SELECT * FROM titles WHERE pub_id = publishers.pub_id AND type ='business')下面的查询查找已经不销售的书的名称:SELECT title FROM titles WHERE NOT EXISTS (SELECT title_id FROM sales WHERE title_id = titles.title_id)B. 比较使用EXISTS 和IN 的查询这个例子比较了两个语义类似的查询。
第一个查询使用EXISTS 而第二个查询使用IN。
注意两个查询返回相同的信息。
USE pubsGOSELECT DISTINCT pub_nameFROM publishersWHERE EXISTS(SELECT *FROM titlesWHERE pub_id = publishers.pub_idAND type = \'business\')GO-- Or, using the IN clause:USE pubsGOSELECT distinct pub_nameFROM publishersWHERE pub_id IN(SELECT pub_idFROM titlesWHERE type = \'business\')GO下面是任一查询的结果集:pub_name----------------------------------------Algodata InfosystemsNew Moon BooksE. 使用NOT EXISTSNOT EXISTS 的作用与EXISTS 正相反。
如果子查询没有返回行,则满足NOT EXISTS 中的WHERE 子句。
本示例查找不出版商业书籍的出版商的名称:USE pubsGOSELECT pub_nameFROM publishersWHERE NOT EXISTS(SELECT *FROM titlesWHERE pub_id = publishers.pub_idAND type = \'business\')ORDER BY pub_nameGO2. 范式A.1NF:满足二维表的的关系模式B:2NF:满足1NF,且不存在非主属性对于候选码的部分依赖分解方法:用候选码的每个非空子集作为新的候选码构造子表再将依赖于新候选码的属性放置到该码所在的表中C:3NF:不存在传递依赖分解方法:删除传递依赖于别人的属性,将被删除的属性与其直接依赖的决定因子放置在一起组成新表D:BCNF:每个决定因子都是候选码(满足1,2,3范式)三.UML设计1.用例图间关系:包含,扩展2.类图间关系:依赖表示类之间的使用关系虚线+箭头泛化表示一般与特殊的关系直线+空心三角聚集是特殊的关联,表示整体与部分的关系直线+空心菱形组合是很强的关联,而且整体与部分的生存周期是一致的直线+实心菱形实现接口虚线+空心三角四.程序流程图(可不用复习)五.算法设计1.指针:一个存储地址的变量2.数组名存储的是,数组在申请空间时数组名存储该存储空间的首地址,因此也是指针。
当直接输出数组名是,其实是输出的是数组的首地址。
可以用指针的方式访问数组。
3.C语言中,当形参是普通变量时,传递的是实参的值,当形参是指针时,传递的是指针变量的值,但自身的改变不会传递给实参。
4.线性表:除第一个外,集合中每个数据元素均有且仅有一个前驱,除最后一个外,集合中每一个元素都有且仅有一个后继。
线性表的节点一定是同一类型的数据。
5.顺序存储:逻辑关系上相邻的两个元素在物理位置上也是相邻。
A的存储位置计算公式:loc(ai)=loc(a1)+(i-1)*1顺序存储的缺点:线性表的大小固定,浪费大量的存储空间,不利于节点的增加或减少;执行线性表的插入和删除操作要移动其他元素,不够方便。
6.链式存储:单链表循环链表双向链表线性表链式存储用链表存储线性表,头指针指向第一个节点。
缺点:由于要存储地址指针,浪费空间7.队列:一种先进先出(FIFO)的线性表,队列只允许在一端(对尾)进行插入,另一端(对首)进行删除运算的线性表。
8.栈:仅在表尾进行插入或删除的一种LIFO线性表。
表尾是栈顶,表头是栈底。
9.构造哈夫曼树:定义:树的带权路径最短的树(树中所有叶子节点的带权路径长度之和)构造方法:每次挑选两个根节点最小的树作为左右子树构造一棵新的二叉树,且设树的根节点的权为左右子树根节点的权的和,新形成的二叉树又参与下一轮的挑选(挑选两个根节点最小的树)。