20231402 《计算机基础与程序设计》课程总结
每周作业链接汇总
实验报告链接汇总
实验报告用Word文档写的,没有链接。
整体评价一下第1周作业中自己提出的问题是不是抓住了学习重点
总体上并没有抓住重点,第一次接触,还不是很清楚什么重要,所问的问题很多都与重点内容无关。
回答一下第1周作业中自己提出的问题
-
计算机各层之间是怎样配合的,各自扮演什么角色?
计算机体系结构可以分为多个层次,其中常见的是分为硬件和软件两个大的方面。在硬件方面,通常涉及以下层次:
硬件层(电子层): 这是计算机的最底层,包括处理器、内存、输入输出设备等。这一层面负责执行机器指令,执行各种计算和处理任务。
微体系结构层: 介于硬件层和指令集架构层之间,关注如何在硬件层次上实现指令集架构的要求。
指令集架构层: 这一层定义了机器指令集的架构,提供给程序员使用的指令集。它是硬件和软件的接口。
操作系统层: 负责管理硬件资源、提供基本服务,为上层应用程序提供运行环境。
高级语言层: 包括编程语言和编译器,提供更高层次的抽象,使程序员能够更方便地编写程序。
在软件方面,程序员编写高级语言代码,编译器将其翻译成机器代码,然后由操作系统管理硬件资源执行。 -
信息隐藏和抽象的关系,什么叫信息隐藏源自抽象?
信息隐藏:是一种编程思想,通过封装细节,只暴露必要的信息,使得程序模块之间的关系更加清晰,提高代码的可维护性和可读性。
抽象:是一种思维方式,通过舍弃不必要的细节,关注问题的核心,从而更容易理解和处理复杂的系统。
抽象和信息隐藏是相辅相成的。抽象是对问题本质的提取,而信息隐藏则是通过封装细节来隐藏实现的具体细节。在软件开发中,良好的抽象使得信息隐藏更容易实现,而信息隐藏则提供了抽象的实现手段。这两者相互支持,使得程序的设计更加清晰、模块化、可维护。 -
存在三进制吗?如果存在,为什么应用不广泛,它和二进制有什么区别?如果不存在,为什么不存在?
三进制是存在的,但在计算机科学和数字电子领域,我们更常用的是二进制。主要原因包括:
区别:
二进制是基于2的数制,只包含0和1两个数字。
三进制是基于3的数制,包含0、1和2三个数字。
应用不广泛的原因:硬件复杂性:二进制在电子电路中更容易实现。计算机内部的逻辑电路使用二进制的高低电平来表示信息,而使用其他进制可能导致
设计更为复杂的电路。
标准化和一致性 二进制已经成为计算机系统中的标准,软硬件都以此为基础。使用其他进制会引入不必要的复杂性和不一致性。
简便性:二进制在表示和计算上更为简便。大多数计算机硬件和软件都是按照二进制处理的,转换为其他进制可能会引入冗余的转换
操作。为什么不存在更多的进制:
在计算机科学中,二进制因其简洁性和实现的方便性而被广泛采用。使用其他进制会引入复杂性,并且通常不会带来实质性的优势。
二进制已经成为计算机系统的事实标准,使用其他进制可能需要重新设计和标准化整个系统,这是一项庞大而复杂的任务,而收益相对较小。 -
不同的文件格式对图片或视频有什么影响,文件格式是否可以相互转换?
不同的文件格式对图片或视频可以有不同的影响,主要体现在文件大小、图像质量和功能方面。以下是一些常见的图片和视频文件格式及其特点:
对于图片:
JPEG(.jpg):这是一种常见的有损压缩格式,对图像进行压缩以减小文件大小,但会导致一定程度的图像质量损失。适合用于存储和传输照片和图像。
PNG(.png):这是一种无损压缩格式,保留图像的高质量,但文件大小通常比JPEG大。适合用于图像的精确编辑和透明背景。
GIF(.gif):这是一种支持动画和透明背景的格式,适合用于简单的动画和图形。
对于视频:
MP4(.mp4):这是一种常见的视频格式,支持高质量视频和音频的压缩和存储。适合用于在线视频和流媒体。
AVI(.avi):这是一种常见的多媒体容器格式,支持多种视频和音频编解码器。适用于Windows平台。
MOV(.mov):这是一种由苹果公司开发的视频格式,用于存储和播放视频。适用于Mac平台。
关于文件格式转换,是可以相互转换的。有许多工具和软件可以将一个文件格式转换为另一个格式。例如,可以使用图像编辑软件或在线转换工具将JPEG转换为PNG,或使用视频转换软件将MP4转换为AVI。但需要注意的是,转换过程中可能会有一些质量损失,尤其是从有损格式转换为无损格式时。因此,在转换文件格式之前,最好根据具体需求和用途进行评估和调整。 -
矢量图形和光栅图形有很大差异,那它们应用范围完全不同吗?
尽管矢量图形和光栅图形在应用范围上有所不同,但也存在一些重叠的应用领域。例如,在网页设计中,通常使用矢量图形创建图标和矢量图像,并使用光栅图形显示照片和背景图像。此外,矢量图形可以转换为光栅图形以便在特定场景中使用,如将矢量图标导出为PNG格式的光栅图像。
-
什么叫字节可寻址,不可寻址又该怎么理解,不可寻址的字节地址在哪里,可寻址的字节又有什么用途?
字节可寻址和不可寻址是与存储和访问数据相关的概念,通常与计算机体系结构和内存管理有关。让我详细解释这些概念:
1.字节可寻址(Byte-Addressable):这是最常见的情况,它表示计算机内存中的每个字节都有一个唯一的地址。在字节可寻址系统中,你可以单独寻址和访问内存中的每个字节。这是大多数通用计算机体系结构所采用的方式,例如x86架构的计算机。
2.不可寻址(Word-Addressable):在不可寻址的情况下,内存被分为更大的单元,通常是字(Word)或其他固定大小的块。这意味着内存的每个地址不是字节的地址,而是一个更大单元的地址。因此,你不能单独寻址和访问内存中的每个字节,只能按照更大单元(例如字或块)来访问数据。不可寻址的字节地址通常不存在。在这种情况下,内存被分为不同的单元,而每个单元具有唯一的地址。这意味着如果你需要访问一个单元内的字节,你必须知道该单元的地址以及字节在该单元内的偏移量。这是一个更为复杂的内存管理方式,通常与某些嵌入式系统或特定的计算机体系结构相关。
可寻址的字节具有以下用途:3.通用性:字节可寻址允许更灵活地存储和操作数据,因为你可以访问和处理单个字节,而不必考虑固定大小的块或字。
4.精细的内存管理:在字节可寻址系统中,操作系统和应用程序可以更精细地管理内存,动态分配和释放字节级别的内存。
5.支持多种数据类型:字节可寻址允许计算机处理不同大小和类型的数据,从字符到整数、浮点数等。
6.灵活性:字节可寻址内存提供更大的灵活性,因为它可以适应各种应用,从文本处理到图像处理和多媒体。总之,字节可寻址的内存是通用计算机中常见的方式,它提供了更高的灵活性和通用性,使计算机能够处理各种数据类型和应用。不可寻址的内存在一些特殊的环境中可能有用,但通常更复杂,且不如字节可寻址的内存灵活。
-
嵌入式具体是怎样的,生活中随处可见嵌入式这个名称,那为什么嵌入式应用如此广
嵌入式系统是一种专门设计用于执行特定任务或功能的计算机系统。它通常被嵌入在其他设备、系统或产品中,以控制、监视或处理各种任务和操作。以下是嵌入式系统的一些特点和原因,解释了为什么它们在生活中如此广泛应用:
1.特定任务:嵌入式系统被设计用于执行特定的任务或功能,例如汽车上的引擎控制、智能手机上的操作系统、家用电器上的控制逻辑等。它们不是通用计算机,而是专门为某种特定的应用而优化的。
2.小型化:嵌入式系统通常非常小巧,因为它们需要适应其他设备或产品中的有限空间。这使得它们可以集成到各种物理形态中,从微型芯片到小型电路板。
3.低功耗:嵌入式系统通常需要在低功耗条件下运行,这对于移动设备、电池供电设备和无线传感器网络等应用至关重要。
4.高性能:尽管小巧,嵌入式系统通常具有高性能,能够处理复杂的任务和数据。这要求它们在有限的资源内实现高效的计算。
5.实时性:某些嵌入式系统需要实时响应,例如汽车的防抱死制动系统或飞机的飞行控制系统。它们必须在指定的时间内完成任务。
6.定制性强:嵌入式系统通常根据特定的应用需求进行定制开发。这使得它们可以精确满足设备或产品的功能需求。
7.通信能力:许多嵌入式系统具有通信能力,可以与其他设备、网络或云服务进行数据交换。这在物联网应用中尤为重要。
8.成本效益:由于它们的小型化和定制性,嵌入式系统通常在成本上更具竞争力,使得各种设备和产品能够以合理的价格提供给消费者。因此,嵌入式系统之所以如此广泛应用,是因为它们可以在各种领域中提供高效、可靠和定制化的解决方案,从而使设备和产品更加智能化、自动化和功能强大。从智能手机到家用电器、汽车、医疗设备、工业控制系统以及物联网设备,嵌入式技术在现代社会中扮演着重要的角色。
-
如何用半加器构成全加器,加法器具体是怎样执行的?
半加器用于执行两个单比特二进制数的加法操作,它有两个输出:一个是和(Sum),另一个是进位(Carry)。全加器用于执行三个单比特二进制数的加法操作,其中两个输入用于相加,第三个输入是上一个加法的进位。全加器包含两个半加器和一个或门,其中一个半加器用于执行两输入的加法,另一个半加器用于处理进位。具体来说,进位输入和两个操作数输入进行与运算,结果用于第一个半加器,然后两个半加器的和输出通过或门产生全加器的和输出。全加器的进位输出可用于级联多个全加器以执行多位数的加法操作。
-
除了顺序搜索和二分检索还有其他搜索方法吗,二分检索类似数学上的二分法,但是字母不像数字,二分检索是怎样比较项目的大小呢?
除了顺序搜索和二分搜索,还有其他搜索方法,其中一种较常见的是哈希表(Hash Table)搜索。哈希表使用散列函数将数据映射到一个具体的位置,然后可以在常数时间内查找数据。它适用于快速查找和插入数据的场景,但不适用于有序数据的检索,因为数据在哈希表中没有明确的顺序。
对于二分搜索,您提到它类似于数学上的二分法,但如何比较项目的大小取决于项目的数据类型。对于数字,比较大小是直接的,可以使用小于、大于或等于操作符进行比较。但对于非数字类型,比较可能会涉及到定义在这些类型上的特定比较函数或方法。
对于字母或字符串的二分搜索,通常会使用字典顺序进行比较。字典顺序是一种基于字母表的排序方法,其中字符按照它们在字母表中的顺序进行比较。例如,对于英文字母,字典顺序是'A' < 'B' < 'C' < … < 'Z'。在这种情况下,您可以使用字符串比较函数来确定一个字符串是否在另一个字符串之前、之后或相等。
一般来说,比较项目大小的方法取决于数据类型和具体的编程语言。在不同的编程语言中,可能会有不同的比较函数或方法来处理不同类型的数据。 -
书中提到“永远都不要重复造轮子”,那如何确认自己没有重复呢,重复后有什么后果呢?
原则上,"永远都不要重复造轮子" 这句话的意思是,在编程和软件开发中,不要浪费时间和资源去重新实现已经存在的功能或工具。通常,这是因为已经有许多开源库、框架和工具可以用来完成常见的任务,而且这些已有的解决方案通常经过了广泛的测试和改进,可以提供高质量和高效的功能。
然而,有时候重新实现某些功能可能是有道理的,例如:
1.学习目的:如果您是初学者,重新实现一些基本的功能可能有助于您更好地理解原理和算法。这有助于您提高编程技能。
2.特定需求:有时,现有的解决方案可能不完全符合您的特定需求,或者它们可能会引入不必要的复杂性。在这种情况下,重新实现可能更加合理。
3.性能优化:在某些情况下,您可能需要更高性能的解决方案,而不是标准库或通用工具提供的解决方案。在这种情况下,重新实现可以使您更好地控制性能方面的问题。然而,如果不小心重复造轮子,可能会导致以下问题:
4.浪费时间和资源:重新实现现有功能需要花费时间和精力,这可能是不必要的,尤其是在有更好的解决方案可用时。
5.潜在错误:自己实现功能可能会引入错误,而这些错误可能已经在现有的解决方案中得到修复。这可能导致软件中的漏洞和不稳定性。
6.维护问题:如果您自己实现了某些功能,您需要负责维护它,包括修复错误和进行升级。这可能会增加您的工作量。因此,在决定是否重新实现某些功能时,应该仔细考虑实际需求,确保没有更好的替代方案可用,以及权衡时间、资源和质量方面的因素。最好的做法是在需要时候考虑开源解决方案,只有在确实需要时才重新实现特定功能。
-
列表属性中项目是线性的我还是不太理解,什么叫“特殊的组成部分”,这几个组成部分是有顺序的吗
"列表属性中项目是线性的" 这句话指的是列表(通常是线性数据结构)中的项目(元素)是按照一定的顺序排列的,每个项目都有唯一的前一个和后一个项目,形成了一个线性序列。这意味着列表中的项目按顺序排列,第一个项目有一个前驱(前一个项目),最后一个项目有一个后继(后一个项目),而其他项目都有一个前驱和一个后继。
"特殊的组成部分" 指的是列表中的元素或项目,它们是列表的基本构成单元。每个项目都有一个特定的值,这个值可以是任何数据类型,例如整数、字符串、对象等,具体取决于编程语言和应用场景。
这些组成部分是有顺序的,因为它们按照线性方式排列。这意味着每个项目都有一个相对于列表的位置,这个位置在列表中是唯一的。这个顺序很重要,因为它决定了你可以在列表中执行的操作,例如插入、删除、查找等,都依赖于项目的顺序。在列表中,通常你可以通过索引或位置来访问和操作这些特殊的组成部分。 -
编译器可以将高级程序设计语言翻译为机器码,那是否还有使用汇编语言的必要?
尽管编译器能够将高级程序设计语言翻译为机器码,但在某些情况下,使用汇编语言仍然具有一些优势和必要性。以下是一些使用汇编语言的情境:
1.对底层硬件的直接控制: 汇编语言允许程序员更直接地控制计算机的底层硬件。这对于一些特殊需求、嵌入式系统或对性能要求极高的应用可能是必要的。
2.特定平台的优化: 汇编语言允许程序员更好地控制代码生成,以适应特定的硬件架构。在一些需要极致性能的应用中,手动优化汇编代码可能会比编译器生成的代码更有效。
3.嵌入式系统开发: 在嵌入式系统中,资源受限,对性能的要求高,因此程序员可能会直接使用汇编语言来编写关键部分的代码,以充分利用硬件资源。
4.操作系统内核编写: 操作系统内核通常需要直接与硬件交互,执行一些特权指令,这就要求对汇编语言有深入的了解。因此,在编写操作系统内核时,通常需要使用汇编语言。
5.学术研究和漏洞利用: 在计算机安全领域,研究人员和黑客可能会使用汇编语言来编写漏洞利用代码或进行低级的系统研究。虽然现代编译器在产生高效的机器码方面表现得非常出色,但在一些特殊的场景下,对汇编语言的了解和使用仍然是有价值的。然而,大多数应用程序的开发和维护仍然更适合使用高级程序设计语言,因为它们提供了更高的抽象级别和更好的可读性。
-
为什么要尽量在公式中使用常量?
在计算机编程中,尽量在公式中使用常量而不是硬编码的数字有一些重要的原因:
可读性和可维护性: 使用常量可以增强代码的可读性。通过使用具有描述性名称的常量,代码更易于理解。硬编码的数字可能不够清
晰,并且在多次使用相同数值时,如果需要进行修改,可能需要在多个地方进行更改。使用常量可以使代码更容易维护,因为只需在一个地方进行修改即可。
易于调整: 如果在公式中使用硬编码的数字,当需要更改数值时,你必须找到每一个使用该数值的地方进行修改。而使用常量,你只需修改常量的定义,整个程序中使用该常量的地方都会得到更新。这降低了出错的可能性。
提高代码的灵活性: 使用常量可以提高代码的灵活性。如果将常量用作公式中的参数,可以轻松调整这些参数,而不必修改公式本身。这样的设计使得程序更容易适应不同的需求。
数值精度: 在一些科学计算或需要精确数值的情况下,使用常量可以确保数值的一致性。硬编码的数字可能会导致舍入误差或其他数值问题。
符号表达: 常量的使用可以增加代码中的符号表达,使得代码更易理解。例如,如果你在代码中看到PI代表圆周率,就比看到3.14159更容易理解。
代码重用: 使用常量可以促进代码的重用。如果某个数值在不同的地方多次使用,将其定义为常量可以方便地在其他地方重用,而不必复制粘贴相同的数字。
总的来说,使用常量可以提高代码的可读性、可维护性,降低出错的概率,增加代码的灵活性,促进符号表达,以及方便代码重用。这些因素都有助于编写更高质量的、易于理解和维护的代码。 -
如何解决词法二义性和句法二义性给计算机带来的问题?
词法二义性和句法二义性是自然语言处理中常见的问题,它们给计算机处理语言带来了挑战。以下是解决这些问题的一些方法:
词法二义性(Lexical Ambiguity):上下文分析: 利用上下文信息可以帮助解决词法二义性。通过考虑词语在句子中的位置以及与其他词语的关系,可以更准确地确定词语的含义。
词性标注: 使用词性标注可以帮助消除一些词法二义性。对于同一个词,根据其在句子中的词性,可以更好地确定其含义。
语法分析: 通过与句法分析结合,可以更全面地理解句子的结构,从而减少对词法的二义性。
句法二义性(Syntactic Ambiguity):上下文分析: 类似于词法二义性,上下文分析在解决句法二义性时也是有效的。通过考虑整个句子的结构和语境,可以更好地理解句子的含义。
使用语法规则: 制定和使用明确的语法规则可以帮助解决句法二义性。定义更精确的语法规则可以减少模糊性。
概率模型: 使用概率模型(例如,隐马尔可夫模型、条件随机场)来处理句法结构可以考虑多个可能的解析,并为每种可能性分配一个概率。这样可以在多个可能性之间做出权衡。
语言模型: 使用语言模型可以帮助理解句子的合理性。如果一个解析在语言模型中更为自然,那么它可能更有可能是正确的。
语义分析: 考虑句子的语义结构,可以帮助排除一些句法二义性。语义分析可以提供关于句子含义的信息,有助于选择正确的语法结构。
在处理自然语言时,通常会综合运用这些方法,选择最适合特定应用场景的策略。这可能涉及到机器学习、深度学习和基于规则的方法的组合。解决词法和句法二义性是自然语言处理领域的一个重要挑战,需要不断的研究和改进。 -
微分方程的输入是怎样影响不同模型输出结果的好坏的?
微分方程是描述变化和变动的数学工具,它在建模动态系统和自然现象时非常有用。微分方程的输入可以是系统的初始条件和外部驱动力,这些输入对于模型的输出结果有着重要的影响。
以下是微分方程输入如何影响不同模型输出结果的好坏的一些方面:初始条件: 微分方程的解依赖于初始条件。初始条件是指在时间 t=0 时系统的状态。不同的初始条件可能导致系统在时间的演化中产生不同的行为。因此,对于同一个微分方程,如果初始条件不同,模型的输出结果也会不同。
外部驱动力: 一些微分方程模型包括外部驱动力或输入项,这些项表示系统受到的外部影响。外部驱动力的幅度、频率和时间特性会直接影响系统的响应。对于某些系统,外部驱动力可能是决定系统行为的关键因素。
参数: 微分方程中的参数也对模型输出产生显著影响。调整参数的值可能会改变系统的动态特性。在某些情况下,参数可以表示系统的特性,如阻尼比、质量、弹性系数等。调整这些参数可以模拟不同条件下系统的响应。
系统复杂性: 输入如何影响输出还取决于微分方程模型的复杂性。一些系统可能对初始条件和外部驱动力非常敏感,而另一些可能对这些因素相对不敏感。在一些情况下,系统可能对某些输入变化非常稳定,而对其他输入变化则非常敏感。
数值求解方法: 对微分方程进行数值求解时,选择的数值方法也可能影响模型的输出结果。一些数值方法可能对某些类型的微分方程更有效,而对另一些可能不太适用。数值误差的累积也可能在模拟的长时间尺度内引入一些不确定性。
总体来说,微分方程模型对输入的敏感性取决于具体的方程形式和系统特性。通过仔细选择合适的初始条件、外部驱动力和参数值,以及合适的数值方法,可以更好地理解和预测微分方程模型的行为。 -
各种拓扑都有什么优点缺点?
各种拓扑的优点和缺点:
a. 星型拓扑:优点:
- 容易安装和管理。
- 故障检测和故障隔离相对较为简单。
缺点:
- 中心节点故障可能导致整个网络失效。
- 扩展性受限,添加新设备可能需要大量的布线。
b. 环型拓扑:
优点:
数据传输效率相对较高。缺点:
- 故障检测和故障隔离相对困难。
- 扩展性有限,添加新设备可能破坏整个环。
c. 总线型拓扑:
优点:
- 易于安装和扩展。
- 成本相对较低。
缺点:
- 故障一个节点可能导致整个网络失效。
- 随着节点数量增加,性能可能下降。
d. 树型拓扑:
优点:
- 提供了一定的层次结构,易于管理。
- 故障隔离相对较好。
缺点:
部分故障可能影响整个分支。e. 网状型拓扑:
优点:
- 具有高度的冗余和可靠性。
- 故障隔离性强。
缺点:
- 安装和维护成本较高。
- 配置复杂,不易管理。
-
是什么促使区域链的传播远远超过了电子货币,为什么电子货币没有广泛传播起来呢?
区域链的传播:
区域链(可能指区块链)的传播超过电子货币可能是因为区块链技术提供了去中心化、安全性高、可追溯性等优点。区块链不仅可用于加密货币,还可以应用于智能合约、供应链管理等领域,这些特性使其在更广泛的应用中变得有价值。
电子货币的局限:
电子货币并不是一种单一的技术,而是指代数字形式的货币,包括数字化的法定货币和加密货币。电子货币的传播受到法规、安全性、可接受性等多方面因素的制约。此外,不同国家和地区对于电子货币的法规政策差异较大,也影响了其推广。
- 如何理解“属性”这个概念?
在计算机科学和程序设计中,“属性”通常指对象或数据结构的特征或特性。它描述了对象的某些方面或状态。例如,在面向对象的编程中,一个对象可以有多个属性,每个属性代表对象的一个特征。这些特征可以是对象的状态、性质或其他相关信息。
在关系型数据库中,表的列被称为属性,每个属性存储表中的一类信息。属性具有数据类型,可以是整数、字符串、日期等。
总的来说,“属性”描述了某个实体或数据的性质、特征或状态。
- HTML和CSS是怎样配合使用的?
HTML(Hypertext Markup Language)和 CSS(Cascading Style Sheets)是前端网页开发中两个关键的技术,它们共同协作以创建和美化网页。
HTML 负责定义网页的结构和内容,通过标签表示各种元素(如段落、标题、图像等)。
CSS 负责样式和布局,通过选择器选择HTML元素并应用样式,使页面呈现出期望的外观。
例如,以下是一个简单的HTML和CSS的协作示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Webpage</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f4f4f4;
color: #333;
}
header {
background-color: #007bff;
color: #fff;
padding: 10px;
text-align: center;
}
main {
margin: 20px;
}
footer {
background-color: #007bff;
color: #fff;
padding: 10px;
text-align: center;
}
</style>
</head>
<body>
<header>
<h1>Welcome to My Webpage</h1>
</header>
<main>
<p>This is a sample webpage content.</p>
<!-- More content goes here -->
</main>
<footer>
<p>© 2023 My Webpage. All rights reserved.</p>
</footer>
</body>
</html>
-
链表有哪些具体应用呢?
链表是一种常见的数据结构,它由节点组成,每个节点包含数据和指向下一个节点的指针。链表相对于数组的主要优势在于其动态性,可以方便地插入或删除节点而无需移动其他节点。以下是链表的一些具体应用:
实现动态数据结构: 链表的动态性使其非常适合用于实现栈、队列和其他动态数据结构。在这些数据结构中,可以通过在链表的前端或后端插入或删除节点来实现动态的数据操作。
内存分配: 操作系统中的内存分配算法通常使用链表来管理可用的内存块。当有新的内存请求时,可以从链表中分配一块合适大小的内存,释放内存时则将其添加回链表。
LRU缓存淘汰算法: Least Recently Used (LRU) 是一种缓存淘汰策略,链表常被用来实现LRU缓存。最近使用的数据被移到链表头部,当缓存达到容量时,淘汰链表尾部的数据。
符号表: 链表可以用于实现符号表(例如散列表的冲突解决方法之一)。每个符号表条目都包含一个键和与之关联的值。
多项式表示: 链表可以用于表示多项式,其中每个节点包含一个系数和指数,链表的每个节点代表多项式的一项。
图的邻接表: 在图论中,链表可以用于表示图的邻接表。每个顶点的邻接表包含与之相邻的所有顶点。
任务调度: 在操作系统中,链表可用于实现任务调度队列。每个节点代表一个任务,节点的顺序决定了任务的执行顺序。
编辑器的撤销功能: 链表可以用于实现文本编辑器中的撤销(undo)功能。每次编辑操作都可以看作是链表中的一个节点,撤销时删除最后一个节点。
这些只是链表应用的一小部分,实际上,链表在计算机科学和软件工程中有着广泛的应用。在这个例子中,HTML定义了页面的结构,而CSS定义了页面的样式,包括颜色、字体、布局等。这种分离的设计使得网页的结构和样式更容易管理和维护。
你有什么项目被加分,谈谈你的经验
优秀作业 https://www.cnblogs.com/lsh0815/p/17773513.html
课程收获与不足
我在写博客中收获了很多,也在一定程度上提高了公文写作能力。我也接触了很多知识,拓展了视野。需要改进的地方是我需要提高我的学习效率,很多不理解的地方我选择放弃而不是继续弄懂,这不利于我提高学习能力。
给学弟学妹的建议:有不会的多去问,问网络,问学长学姐,问老师。