《计算机基础与程序设计》第7周学习总结

news/2024/11/13 11:19:57/文章来源:https://www.cnblogs.com/Alphiy/p/18538276

学期(2024-2025-1) 学号(20241428) 《计算机基础与程序设计》第7周学习总结

作业信息

|这个作业属于哪个课程|<班级的链接>(如[2024-2025-1-计算机基础与程序设计](https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP|)|
|-- |-- |
|这个作业要求在哪里|<作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)|
|这个作业的目标|数组与链表 基于数组和基于链表实现数据结构|
|作业正文|https://i.cnblogs.com/posts/edit|

教材学习内容总结

子程序与参数
定义和作用:
子程序可以是函数(Function)或过程(Procedure),函数通常返回一个值,而过程则不返回值。
子程序允许程序员将复杂的操作分解成更小、更易于管理的部分。
调用和返回:
子程序通过调用语句被执行,执行完毕后返回到调用点继续执行。
函数在执行完毕后会返回一个值给调用者,而过程则不会。
参数(Parameters):
参数是传递给子程序的值,用于影响子程序的行为。
参数可以是输入参数(传入值)、输出参数(传出值)或输入输出参数(传入传出值)。
参数传递方式:
按值传递(Pass by Value):子程序接收参数的副本,对参数的修改不会影响原始数据。
按引用传递(Pass by Reference):子程序直接操作参数的内存地址,对参数的修改会影响原始数据。
重载(Overloading):
允许创建多个具有相同名称但参数列表不同的子程序,这有助于提供更清晰的API和简化代码。
作用域(Scope):
子程序内部定义的变量通常具有局部作用域,即它们只能在子程序内部访问。
全局变量可以在程序的任何地方访问,包括子程序内部。
递归(Recursion):
递归是一种特殊的子程序调用,其中子程序直接或间接地调用自身。
递归需要有一个明确的终止条件,否则会导致无限递归。
栈帧(Stack Frame):
每次调用子程序时,都会在调用栈上创建一个新的栈帧,用于存储局部变量和参数。
当子程序返回时,其对应的栈帧会被销毁。
尾调用优化(Tail Call Optimization, TCO):
尾调用是指子程序调用是函数体中的最后一个操作。
尾调用优化是一种编译器优化技术,可以避免为尾调用创建新的栈帧,从而减少栈空间的使用。
闭包(Closures):
闭包是函数和其周围状态(词法环境)的组合,允许函数访问定义在其外部的变量。
这些知识点是编程中子程序和参数的基础,不同的编程语言可能会有不同的实现细节和特性。
连续内存分配:

数组在内存中分配一块连续的空间来存储数据元素。
随机访问:

数组支持通过索引进行快速随机访问,访问时间复杂度为O(1)。
固定大小:

静态数组的大小在定义时确定,不可更改。
动态数组(如C++中的std::vector或Java中的ArrayList)可以调整大小,但通常需要分配新的内存块并复制旧数据。
插入和删除操作:

在数组的开头或中间插入或删除元素通常需要移动大量元素,时间复杂度为O(n)。
空间利用:

数组可能会预留额外空间以支持动态扩展,这可能导致空间的浪费或不足。
缓存友好性:

数组的连续内存分配使得缓存利用率高,有助于提高性能。
适用场景:

适用于元素数量基本确定且需要频繁随机访问的场景。
基于链表的数据结构
非连续内存分配:

链表中的每个元素(节点)可以独立分配在内存的任何位置。
顺序访问:

链表只能通过从头节点开始顺序访问,访问特定节点的时间复杂度为O(n)。
动态大小:

链表的大小可以随时改变,插入和删除操作不需要移动其他元素。
插入和删除操作:

在链表的任意位置插入或删除节点只需要改变指针,时间复杂度为O(1),但前提是已经定位到该位置。
空间利用:

链表不需要预留额外空间,但每个节点需要额外存储指向前一个或后一个节点的指针,可能会增加存储开销。
缓存友好性:

链表的非连续内存分配可能导致缓存未命中,影响性能。
适用场景:

适用于元素数量频繁变化且顺序访问的场景,如实现栈、队列等。
常见基于数组和链表的数据结构
数组实现:

数组列表(ArrayList)
哈希表(如C++中的std::unordered_map)
字符串(在某些语言中,如C/C++)
链表实现:

单链表
双向链表
循环链表
哈希链表(开放寻址法)
栈(可以使用数组或链表实现)
队列(可以使用数组或链表实现)

教材学习中的问题和解决过程(先问 AI)



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/830728.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现一

技术点:SpringBoot+SpringDataJPA+Mysql+Freemaker+Bootstrap+JS+CSS+HTML 特色功能:发布课程、学习课程、分享资料、资料讨论等。 部分功能:前台用户信息实体类Entity、新闻信息实体类Entity、课程分类信息实体类Entity、课程信息实体类Entity、角色信息实体类Entity、用户…

『模拟赛』NOIP2024(欢乐)加赛3

『模拟赛记录』NOIP2024(欢乐)加赛3Rank 真欢乐吗, 不过 mission accomplished.A. Sakurako and Water CF2033B *900 byd 还懂难易搭配,不过这个 b 翻译甚至不着重以下主对角线差评,被硬控半个小时,直到手模样例才发觉不对。 读懂题就很简单了,最优一定是找最长的对角线…

权限系统:一文搞懂功能权限、数据权限

大家好,我是汤师爷~ 在权限系统中,权限通常分为两大类:功能权限和数据权限。这两种权限相辅相成,共同决定了用户在系统中可以执行哪些操作、访问哪些信息。 功能权限 1、功能权限是什么 当登录某个系统时,为什么有些功能按钮是灰色的,而有些页面甚至完全不可见?这正是功…

2024.10.30(Maven)

Main放源代码 test放测试代码 pom.xml项目核心配置文件 Maven的主要功能有: 1.提供了一套标准化的项目结构 2.听了一套标准化的构建流程(编译、测试、打包、发布....) 3.提供了一套依赖管理机制

【日记】你们两个熊孩子,不要叫我叔叔啊啊啊啊(1630 字)

正文今天上午起床,窗外地面湿了。瞬间不想出门吃饭了。挣扎了一会儿,还是带着伞出门了。毕竟昨天说了要出门剪头发。花了一个小时吧好像。指定的那个理发店还挺远。理发师都认识我了,笑了笑,问我怎么剪。我还是说只修一下刘海,不要遮住眉毛和眼睛就行,后面和侧边还要继续…

东商项目mysql实例库(dingding)增量备份的实现

一、钉钉库(dingding)实例全量备份 1.机器:cvlink-xxcc-prd1172.16.50.59cvlink-xxcc-prd2172.16.50.60备注:59是主库,60为从库,因为做了主从,所以两个数据库数据是一致的,直接对从库60的实例钉钉进行备份即可。2.对从库60的实例进行备份: 2.1 登录从库:2.2 进行备份…

安娜的档案(Anna’s Archive)官网最新镜像网站入口(实时更新)

安娜的档案(Anna’s Archive)是一个广受欢迎的在线资源平台,汇集了Z-Library、Library Genesis和Sci-Hub等资源,拥有超过2000万册书籍和9000万篇论文。该网站提供多种下载选项,包括快速、慢速、libgen、IPFS和Tor浏览器下载,以满足不同用户的网络和需求。用户可以无需注册…

STM32的内存(堆和栈)

一般来说单片机的内存指的是FLASH和RAM,当在程序中定义了全局变量、局部变量、只读变量等参数时都是会存放到对应的FLASH或者是RAM中。具体对单片机FLASH和RAM的介绍之后再写,这里只对单片机内存分配,对堆和栈以及变量的存储做一个梳理和记录。1、FLASH(0x0800 0000) FLAS…

使用Boost.asio与Boost.beast基于协程连接ws

目录目录 前言 准备工作 实现初始化io_context并监听信号 启动连接ws的线程并启动io_context 建立tcp链接(以下步骤皆位于ws函数中) ws握手 传输数据 效果总结前言 本文主要介绍一个使用Boost.asio和Boost.beast基于协程连接Websocket(ws)的方法。其中C++版本为20,Boost版本…

使用 Let’s Encrypt 免费申请泛域名 SSL 证书,并实现自动续期

使用 Let’s Encrypt 免费申请泛域名 SSL 证书,并实现自动续期 目录使用 Let’s Encrypt 免费申请泛域名 SSL 证书,并实现自动续期🛠️ 环境准备💡 什么是 Let’s Encrypt?🧠 Let’s Encrypt 证书颁发原理1. 域名验证2. 证书生成3. 证书安装4. 自动续期🛠️ Certbot…

Python爬虫学习笔记

目录基础篇:HTTP:HTTP请求:请求行:请求头:请求体:HTTP响应:状态行:响应头:响应体:Requests库:GET请求:POST请求:HTML:HTML网页结构:HTML标签:网页解析:Regular Expression:元字符:量词:正则表达式:Re解析:实战案例:Beautiful Soup:安装:成员属性/函数…

高级语言程序设计第6次作业

高级语言程序设计课程第六次个人作业 这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C 这个作业要求在哪里:https://edu.cnblogs.com/campus/fzu/2024C/homework/13303 学号:102300303 姓名:梁佳 第1题第2题第3题第4题第5题第6题第7题第8题第9题第10题第11…