<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss/feed.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>未似风不息</title><description>学习技术 分享生活</description><link>https://www.weisifengbuxi.top</link><item><title>静态博客也能用管理面板了吗？</title><link>https://www.weisifengbuxi.top/post/8687d02a</link><guid isPermaLink="false">8687d02a</guid><description>众所周知，静态博客 部署简单 、 访问速度快 ，但缺点也很明显， 不方便管理 ，每次发布文章都需要在本地编写好 Markdown 文件，然后推送到 GitHub 仓库中，操作起来比较麻烦。如果能有一个 管理面板 ，可以直接在浏览器中编写和发布文章，那就更方便了。 无意中看到一个视频，是今年八月份发布</description><pubDate>Sun, 02 Nov 2025 01:45:14 GMT</pubDate><content:encoded>&lt;p&gt;众所周知，静态博客&lt;strong&gt;部署简单&lt;/strong&gt;、&lt;strong&gt;访问速度快&lt;/strong&gt;，但缺点也很明显，&lt;strong&gt;不方便管理&lt;/strong&gt;，每次发布文章都需要在本地编写好 Markdown 文件，然后推送到 GitHub 仓库中，操作起来比较麻烦。如果能有一个&lt;strong&gt;管理面板&lt;/strong&gt;，可以直接在浏览器中编写和发布文章，那就更方便了。&lt;/p&gt;
&lt;p&gt;无意中看到一个视频，是今年八月份发布的，介绍了一个名为 &lt;strong&gt;Hexo Pro&lt;/strong&gt; 的项目，可以为 Hexo 博客添加一个管理面板，实现在线编写和发布文章等功能。于是下载了看看效果，发现十分不错，虽然有一些小问题，但整体体验还是很好的。相信作者会不断改进这个项目。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/wuzheng228/hexo-pro/&quot;&gt;Hexo Pro&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;安装 Hexo Pro&lt;a href=&quot;#安装-hexo-pro&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;只需要在 Hexo 博客的根目录下运行以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;npm&lt;/span&gt;&lt;span&gt; install&lt;/span&gt;&lt;span&gt; --save&lt;/span&gt;&lt;span&gt; hexo-pro&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装成功（这个项目文件好多 QAQ）&lt;/p&gt;
&lt;p&gt;之后三连启动你的 hexo 服务器&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;hexo&lt;/span&gt;&lt;span&gt; cl&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; hexo&lt;/span&gt;&lt;span&gt; g&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; hexo&lt;/span&gt;&lt;span&gt; s&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后在浏览器中访问 &lt;a href=&quot;http://localhost:4000/pro/&quot;&gt;http://localhost&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;a href=&quot;http://localhost:4000/pro/&quot;&gt;/pro/&lt;/a&gt;，就可以看到 Hexo Pro 的管理面板了。&lt;p&gt;&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/fengmian10.png&quot; alt=&quot;fengmian10.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;fengmian10.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h2&gt;配置 Hexo Pro&lt;a href=&quot;#配置-hexo-pro&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;首先点击左侧系统管理-&amp;gt;设置，配置你的博客信息，包括用户名、密码等，面板会把第一个进入的用户设置为管理员。&lt;/p&gt;
&lt;h3&gt;启用链接重定向&lt;a href=&quot;#启用链接重定向&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;由于这是在 localhost 下运行的，所以需要看你个人情况决定是否开启。&lt;/p&gt;
&lt;h3&gt;编辑器模式&lt;a href=&quot;#编辑器模式&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;选择即时渲染模式，这样可以实时预览文章效果。&lt;/p&gt;
&lt;h3&gt;显示文章封面&lt;a href=&quot;#显示文章封面&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;开启显示文章封面，这样在文章列表中可以看到封面图片。建议开启。&lt;/p&gt;
&lt;h3&gt;跳过静态文件生成&lt;a href=&quot;#跳过静态文件生成&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;如果没配置 GitHub Actions，可以开启这个选项，节省生成静态文件的时间。否则不建议开启。&lt;/p&gt;
&lt;h3&gt;存储类型&lt;a href=&quot;#存储类型&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个目前没法配置自己的图床，只有本地存储和一些大厂提供的存储服务。如果你有对应账号，可以选择你喜好的存储，否则选择本地存储（或使用你个人图床，只是这样麻烦一些）。&lt;/p&gt;
&lt;h3&gt;GitHub 部署配置（不建议）&lt;a href=&quot;#github-部署配置不建议&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;不建议的原因是当你保存配置后，面板会自动修改你的 &lt;code&gt;_config.yml&lt;/code&gt; 文件，这倒没什么，但你的代码中注释全部消失，而且没法撤回。如果你对你代码足够了解且不在意是否有注释，请往下看，否则请忽略此配置。（我发现后，想找之前拷贝过代码的 u 盘，结果发现 u 盘落在教室了，算是因祸得福了）&lt;/p&gt;
&lt;p&gt;进入部署页面，配置你的 GitHub 仓库信息，格式为：username/repo，例如：weisifengbuxi/weisifengbuxi.github.io。&lt;/p&gt;
&lt;p&gt;分支选择&lt;strong&gt;main&lt;/strong&gt;或者&lt;strong&gt;master&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;提交信息使用默认的即可&lt;/p&gt;
&lt;p&gt;GitHub Token 需要你自己生成，进入 &lt;a href=&quot;https://github.com/settings/tokens&quot;&gt;GitHub Developer Settings&lt;/a&gt;，点击 Generate new token，选择 repo 权限，然后生成一个新的 Token，复制粘贴到 Hexo Pro 的 GitHub Token 输入框中即可。注意 token 只会出现一次，因此要妥善保存。&lt;/p&gt;
&lt;h2&gt;体验功能&lt;a href=&quot;#体验功能&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;体验总体来说还是可以的，评分没那么高的原因是我的 u 盘到现在还是没找见，应该再也见不到了 QAQ，那个是学校给的，上面还有校徽。（也提醒大家不要图方便随便把 u 盘揣兜里，等你发现的时候就太迟了）。&lt;/p&gt;
&lt;h3&gt;优点&lt;a href=&quot;#优点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;便于管理文件，尤其对刚建站的新手来说，这个面板可以让他们减少很多摸索时间，能尽快的将精力投入到文章创作之中，并且也方便后期管理。（但我觉得一个博客可以通过不断美化主题，来达到熟悉每项配置的效果。我当时刚建完博客，看到文件夹套文件夹天都塌了，后来跟着其他大佬美化了几十次也逐渐了解了每个文件的作用）&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;缺点&lt;a href=&quot;#缺点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;其中我觉得最不能接受的就是修改配置后会删掉注释，尤其是备份文件还找不到的时候！另外不能链接自己的图床我觉得是一大遗憾，当然这也正常。算我异想天开了。&lt;/li&gt;
&lt;li&gt;面板功能不够多，这个和一些著名的面板比就能看出来，比如宝塔面板。&lt;/li&gt;
&lt;li&gt;当你足够熟悉博客后，再用这个面板会觉得很不习惯。&lt;/li&gt;
&lt;li&gt;当你使用该面板进行创作时，你每输入一个字，本地都会保存一次，这样当你双屏写作时候，看到不断刷新的保存信息会很不舒服。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;当然我自然相信作者会逐渐让这个项目大放光彩的，我们拭目以待。&lt;/p&gt;</content:encoded><category>category:学习笔记</category><category>category:美化</category><category>tag:博客美化</category><category>tag:hexo</category></item><item><title>海洋保育户外课见闻</title><link>https://www.weisifengbuxi.top/post/cd09154f</link><guid isPermaLink="false">cd09154f</guid><description>学校要求我们修一门WPE课，也就是水课，内容是关于海洋保育的。导师是梁霜芷。课程安排了一次去淇澳岛红树林自然保护区的户外教学活动，亲身体验海洋保育工作。以下是我这次户外课的一些见闻。 其实这篇文章我早应该写的，只是太忙了，最近放假才有时间写这篇文章。 淇澳岛简介 淇澳岛位于珠江口东侧，是珠海市的一个</description><pubDate>Sat, 01 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;学校要求我们修一门 WPE 课，也就是水课，内容是关于海洋保育的。导师是梁霜芷。课程安排了一次去淇澳岛红树林自然保护区的户外教学活动，亲身体验海洋保育工作。以下是我这次户外课的一些见闻。&lt;/p&gt;
&lt;p&gt;其实这篇文章我早应该写的，只是太忙了，最近放假才有时间写这篇文章。&lt;/p&gt;
&lt;h2&gt;淇澳岛简介&lt;a href=&quot;#淇澳岛简介&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;淇澳岛位于珠江口东侧，是珠海市的一个重要岛屿。岛上有丰富的自然资源和独特的生态环境，是海洋生态保护的重要区域。淇澳岛以其美丽的海滩、清澈的海水和丰富的海洋生物资源吸引了众多游客和研究人员。&lt;/p&gt;
&lt;p&gt;淇澳岛最有名的动物是招潮蟹，这种小型甲壳类动物以其独特的行为和生态习性而闻名。招潮蟹生活在潮间带，能够适应潮汐变化，具有重要的生态功能，如促进泥沙循环和维持生态平衡。&lt;/p&gt;
&lt;p&gt;此外还有弹涂鱼，这种鱼类因其腹部有强大的肢体，能够在陆地和水中生活，具有独特的适应能力。弹涂鱼在淇澳岛的红树林生态系统中扮演着重要角色，帮助维持生态平衡。&lt;/p&gt;
&lt;h2&gt;海洋保育的重要性&lt;a href=&quot;#海洋保育的重要性&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;海洋保育是指保护和管理海洋生态系统，以确保其健康和可持续发展。随着人类活动的增加，海洋生态系统面临着诸多威胁，如污染、过度捕捞和气候变化等。保护海洋生态系统不仅有助于维护生物多样性，还能保障人类的生存和发展。&lt;/p&gt;
&lt;h2&gt;户外课&lt;a href=&quot;#户外课&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;当时是周六下午 2 点，我们乘坐校巴前往淇澳岛。到达岛上后，就往里面走，最先看见的是一大片红树林。红树林是热带和亚热带沿海地区特有的生态系统，具有重要的生态功能，如防风固沙、净化水质和提供栖息地等。&lt;/p&gt;
&lt;p&gt;老师带着专业的摄影装备，首先发现的动物是白鹭，由于没有拍到好的图片，以下会使用一些同学拍摄的照片&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://s21.ax1x.com/2025/11/01/pVz0EOs.jpg&quot; alt=&quot;pVz0EOs.jpg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;pVz0EOs.jpg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div&gt;
白鹭
&lt;/div&gt;
&lt;figure&gt;&lt;img src=&quot;https://s21.ax1x.com/2025/11/01/pVz0Zmn.jpg&quot; alt=&quot;pVz0Zmn.jpg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;pVz0Zmn.jpg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://s21.ax1x.com/2025/11/01/pVz0KYT.jpg&quot; alt=&quot;pVz0KYT.jpg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;pVz0KYT.jpg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div&gt;
树上白色的都是白鹭
&lt;/div&gt;
路过一座桥的时候发现桥下有很多招潮蟹，雄蟹的最大特征就是大小悬殊的一对螯，颜色鲜艳，有特别的图案。重量几乎为身体的一半，长度为该蟹甲壳直径的三倍以上。
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/zhaochaoxie.jpg&quot; alt=&quot;zhaochaoxie.jpg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;zhaochaoxie.jpg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div&gt;
招潮蟹
&lt;/div&gt;
&lt;figure&gt;&lt;img src=&quot;https://s21.ax1x.com/2025/11/01/pVz0ewq.jpg&quot; alt=&quot;pVz0ewq.jpg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;pVz0ewq.jpg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://s21.ax1x.com/2025/11/01/pVz0mT0.jpg&quot; alt=&quot;pVz0mT0.jpg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;pVz0mT0.jpg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;也有很多弹涂鱼，可惜没拍到其特点，用一张网图&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://s21.ax1x.com/2025/11/01/pVz0ukV.jpg&quot; alt=&quot;pVz0ukV.jpg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;pVz0ukV.jpg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div&gt;
弹涂鱼
&lt;/div&gt;
&lt;p&gt;红树林的作用有很多，这里我举两个重要的&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;防风消浪
红树林的根系发达，能够在恶劣的海洋环境中形成稳固的支架，减缓海浪对陆地的冲击，保护海岸线，降低洪水深度，维护海岸稳定性，因而被称为“海岸卫士”。&lt;/li&gt;
&lt;li&gt;固碳储碳
红树林通过光合作用吸收二氧化碳，储存在植物体内和土壤中，有助于减缓气候变化。红树林生态系统每年能够吸收大量的二氧化碳，其固碳能力远高于陆地森林。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;印象里老师给了一个具体数据，记不太清了，只记得数值很大。展示红树林夸张的固碳能力。&lt;/p&gt;
&lt;h2&gt;注意事项&lt;a href=&quot;#注意事项&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;因为是湿地保护区，没有路的土地是不能走的，此外如果没有采摘证，是不能随意采摘保护区内的任何东西，即使它掉到你的面前。没有潜水证，是不能随便下水的。&lt;/p&gt;
&lt;p&gt;这个注意保护招潮蟹和弹涂鱼，因为总有人会把他们装到桶里带走，破坏生态平衡。&lt;/p&gt;
&lt;h2&gt;梁霜芷老师&lt;a href=&quot;#梁霜芷老师&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;于是老师便带着一堆图片以便我们了解保护区内的其他生物。被来来往往的游客当成导游了，还在旁边看。。。&lt;/p&gt;
&lt;p&gt;后面回去的时候老师发现许多小朋友走到栈道外面捕捉螃蟹，于是大声喝止，几个同学就走在前面假装老师是工作人员，狐假虎威地提醒小朋友们不要乱抓动物。&lt;/p&gt;
&lt;h2&gt;结语&lt;a href=&quot;#结语&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;还有很多内容，可惜时间太长了，我得一点一点回忆，总的来说梁老师的课还是很有意思的，虽然这门课不算绩点，但是能学到很多课本上没有的知识。她也很有耐心，愿意和我们分享她的专业知识。希望以后还能有机会参加类似的户外教学活动，亲身体验自然，了解更多关于海洋保育的知识。&lt;/p&gt;
&lt;p&gt;此处赠诗一首，以表纪念：&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;&lt;strong&gt;蓝海为卷授真知，远涉重洋探藻茨。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;课非显要趣盈室，巧设嬉游启稚思。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;携赴滩涂亲碧浪，身虽娇小凛霜姿。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;见斥妄为伸正义，丹心护海寄情痴。&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;</content:encoded><category>category:生活日常</category><category>tag:海洋保育</category><category>tag:淇澳岛</category></item><item><title>为你的网站添加免费的EdgeOne CDN加速服务</title><link>https://www.weisifengbuxi.top/post/c8bf33e5</link><guid isPermaLink="false">c8bf33e5</guid><description>很多朋友的网站没有购买服务器，因此部署在国外的服务器上，比如Vercel。但由于Vercel 国内被墙了，因此没法使用CDN加速。这使得网站访问速度十分缓慢。 听说腾讯云有相关免费CDN就去试了一下，没想到居然这么良心，免费套餐就能满足大部分个人站长的需求，而且配置起来也非常简单。分享一下如何为你的</description><pubDate>Thu, 30 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;很多朋友的网站没有购买服务器，因此部署在国外的服务器上，比如 Vercel。但由于 Vercel 国内被墙了，因此没法使用 CDN 加速。这使得网站访问速度十分缓慢。&lt;/p&gt;
&lt;p&gt;听说腾讯云有相关免费 CDN 就去试了一下，没想到居然这么良心，免费套餐就能满足大部分个人站长的需求，而且配置起来也非常简单。分享一下如何为你的网站添加腾讯云 CDN 加速服务，保护你的网站同时让你的网站访问速度飞起来！&lt;/p&gt;
&lt;p&gt;话不多说，直接上教程。&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;在开始前，你需要为你的网站备案，并注册一个腾讯云的账号（最好实名认证）&lt;/p&gt;
&lt;/div&gt;
&lt;h2&gt;将你的网站部署在 EdgeOne 上&lt;a href=&quot;#将你的网站部署在-edgeone-上&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;点击访问该链接&lt;a href=&quot;https://console.cloud.tencent.com/edgeone/pages&quot;&gt;EdgeOne page&lt;/a&gt;，点击创建项目，选择导入 Git 仓库，这时候你需要将你的网站代码上传到 GitHub，再将 GitHub 仓库地址填写进去，验证。之后选择你的项目进入。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/edgeone1.png&quot; alt=&quot;edgeone1.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;edgeone1.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;进入你的项目之后点击开始部署，注意项目中不要有单个大小超过&lt;strong&gt;25MB&lt;/strong&gt;的文件，否则会部署失败。&lt;/p&gt;
&lt;h2&gt;获得免费套餐资格&lt;a href=&quot;#获得免费套餐资格&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;然后你需要先获得免费套餐内测资格，正常有以下几种方式获得（不推荐）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 X 平台分享&lt;/li&gt;
&lt;li&gt;在 Discord 上赢取兑换码&lt;/li&gt;
&lt;li&gt;GitHub 合作计划&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&quot;https://edgeone.ai/zh/redemption&quot;&gt;EdgeOne&lt;/a&gt;
后两种方法我没试过，在 x 平台也就是推特，只需要点击立即发布，然后分享一条推文就可以获得免费套餐资格。这是很轻松的，当然如果你没法打开 X 平台，这里再提供第四种更简单的方法，就是直接点击下面的链接申请免费套餐资格。&lt;/p&gt;
&lt;p&gt;我看其他博主没人说这个方法，就当是本站福利了（笑）。&lt;/p&gt;
&lt;p&gt;点击下方链接&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://curl.qcloud.com/NjJH9ooG&quot;&gt;腾讯云 EdgeOne 免费套餐申请&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;选择每周抽兑换码，扫描二维码就可以参与了，这个兑换码每周发两千个，但实际参与人只有不到 200 个，因此 100%能拿到兑换码。&lt;/p&gt;
&lt;h2&gt;配置 CDN 加速&lt;a href=&quot;#配置-cdn-加速&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;现在你有了免费套餐资格，接下来就可以配置 CDN 加速了。&lt;/p&gt;
&lt;p&gt;进入你的&lt;a href=&quot;https://console.cloud.tencent.com/edgeone/zones&quot;&gt;EdgeOne 项目&lt;/a&gt;，点击新增站点，点击开始接入即可，之后将你的兑换码兑换个人版免费版即可（只能兑换这个）。&lt;/p&gt;
&lt;p&gt;接下来的配置请根据你的网站实际情况进行配置即可，主要配置以下几个选项：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;站点域名&lt;/strong&gt;：填写你的网站域名&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;源站配置&lt;/strong&gt;：填写你的网站源站地址，如果是从腾讯云购买的域名可以一键配置，否则得用 cname 配置&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;加速区域&lt;/strong&gt;：选择全球加速&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;协议配置&lt;/strong&gt;：建议开启 HTTPS，选择自动申请免费证书&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;缓存配置&lt;/strong&gt;：建议开启静态资源缓存&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;防护配置&lt;/strong&gt;：这个在免费版中好像不能设置&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你是新手第一次配置，可以去看张洪 heo 大佬的文章&lt;a href=&quot;https://blog.zhheo.com/p/5e50rt80.html&quot;&gt;腾讯云 EdgeOne 免费无限量 CDN 流量，良心到哭了（抽兑换码）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;配置完之后效果非常显著。检测访问全国都是深绿色，没有闪电标志，最关键的是长期完全免费的。这次真的得感谢腾讯云，良心到家了！&lt;/p&gt;</content:encoded><category>category:工具</category><category>tag:腾讯云</category><category>tag:EdgeOne</category><category>tag:CDN加速</category></item><item><title>彻底掌握插入排序与归并排序</title><link>https://www.weisifengbuxi.top/post/97906df8</link><guid isPermaLink="false">97906df8</guid><description>冒泡排序法（Bubble Sort） 是一种简单的排序算法，它通过重复地遍历待排序的列表，比较相邻的元素并交换它们的位置来实现排序。虽然十分直观，但其时间复杂度达到了 $O(n^2)$ 在大多数情况下效率较低，尤其是对于大型数据集来说。 此时， 插入排序（Insertion Sort） 和 归并排序</description><pubDate>Wed, 29 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;冒泡排序法（Bubble Sort）&lt;/strong&gt; 是一种简单的排序算法，它通过重复地遍历待排序的列表，比较相邻的元素并交换它们的位置来实现排序。虽然十分直观，但其时间复杂度达到了 &lt;strong&gt;&lt;span&gt;&lt;span&gt;O(n2)O(n^2)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt; 在大多数情况下效率较低，尤其是对于大型数据集来说。 此时，&lt;strong&gt;插入排序（Insertion Sort）&lt;/strong&gt; 和 &lt;strong&gt;归并排序（Merge Sort）&lt;/strong&gt; 提供了更高效的替代方案。本文将详细介绍它们的原理、实现及性能分析，帮助读者彻底掌握这两种排序方法。&lt;/p&gt;
&lt;h2&gt;插入排序（Insertion Sort）&lt;a href=&quot;#插入排序insertion-sort&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;插入排序是一种简单直观的排序算法，它的工作原理类似于整理扑克牌。通过构建有序序列，对于未排序的数据，在已排序序列中从后向前扫描，找到相应位置并插入。&lt;/p&gt;
&lt;h3&gt;原理&lt;a href=&quot;#原理&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;从第一个元素开始，该元素可以认为已经被排序。&lt;/li&gt;
&lt;li&gt;取出下一个元素，在已经排序的元素序列中从后向前扫描，找到相应位置并插入。&lt;/li&gt;
&lt;li&gt;重复步骤 2 和 3，直到所有元素均排序完毕。&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/fengmian7.1.png&quot; alt=&quot;fengmian7.1.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;fengmian7.1.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div&gt;
插入排序
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://visualgo.net/zh/sorting&quot;&gt;几种排序演示&lt;/a&gt;
&lt;code&gt;你也可以点击上方链接，进入可视化网站亲自体验插入排序的演示&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;实例&lt;a href=&quot;#实例&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;假设有一个待排序的列表 [5, 2, 4, 6, 1, 3]，插入排序的过程如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;初始状态&lt;/strong&gt;：
&lt;ol&gt;
&lt;li&gt;已排序部分：[5]&lt;/li&gt;
&lt;li&gt;未排序部分：[2, 4, 6, 1, 3]&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第一轮&lt;/strong&gt;：
&lt;ol&gt;
&lt;li&gt;取出未排序部分的第一个元素 2&lt;/li&gt;
&lt;li&gt;将 2 与已排序部分的 5 比较，2 &amp;lt; 5，插入到 5 前面&lt;/li&gt;
&lt;li&gt;已排序部分：[2, 5]&lt;/li&gt;
&lt;li&gt;未排序部分：[4, 6, 1, 3]&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第二轮&lt;/strong&gt;：
&lt;ol&gt;
&lt;li&gt;取出未排序部分的第一个元素 4&lt;/li&gt;
&lt;li&gt;将 4 与已排序部分的 5 比较，4 &amp;lt; 5，插入到 5 前面&lt;/li&gt;
&lt;li&gt;已排序部分：[2, 4, 5]&lt;/li&gt;
&lt;li&gt;未排序部分：[6, 1, 3]&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第三轮&lt;/strong&gt;：
&lt;ol&gt;
&lt;li&gt;取出未排序部分的第一个元素 6&lt;/li&gt;
&lt;li&gt;将 6 与已排序部分的 5 比较，6 &amp;gt; 5，插入到 5 后面&lt;/li&gt;
&lt;li&gt;已排序部分：[2, 4, 5, 6]&lt;/li&gt;
&lt;li&gt;未排序部分：[1, 3]&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第四轮&lt;/strong&gt;：
&lt;ol&gt;
&lt;li&gt;取出未排序部分的第一个元素 1&lt;/li&gt;
&lt;li&gt;将 1 与已排序部分的 6、5、4、2 依次比较，1 &amp;lt; 2，插入到 2 前面&lt;/li&gt;
&lt;li&gt;已排序部分：[1, 2, 4, 5, 6]&lt;/li&gt;
&lt;li&gt;未排序部分：[3]&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第五轮&lt;/strong&gt;：
&lt;ol&gt;
&lt;li&gt;取出未排序部分的第一个元素 3&lt;/li&gt;
&lt;li&gt;将 3 与已排序部分的 6、5、4 依次比较，3 &amp;lt; 4，插入到 4 前面&lt;/li&gt;
&lt;li&gt;已排序部分：[1, 2, 3, 4, 5, 6]&lt;/li&gt;
&lt;li&gt;未排序部分：[]&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;最终，列表被排序为 [1, 2, 3, 4, 5, 6]&lt;/code&gt;。&lt;/p&gt;
&lt;h3&gt;实现&lt;a href=&quot;#实现&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;以下是插入排序的 Java 实现代码：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; InsertionSort&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; insertionSort&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; arr&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; arr&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            int&lt;/span&gt;&lt;span&gt; key &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; arr&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            int&lt;/span&gt;&lt;span&gt; j &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            while&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;j &lt;/span&gt;&lt;span&gt;&amp;gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt; arr&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;j&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; &amp;gt;&lt;/span&gt;&lt;span&gt; key&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                arr&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;j &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; arr&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;j&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                j&lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            arr&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;j &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; key&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;复杂度分析&lt;a href=&quot;#复杂度分析&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;时间复杂度：最坏情况下为 &lt;strong&gt;&lt;span&gt;&lt;span&gt;O(n2)O(n^2)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;，平均情况下为 &lt;strong&gt;&lt;span&gt;&lt;span&gt;O(n2)O(n^2)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;，最好情况下为 &lt;strong&gt;&lt;span&gt;&lt;span&gt;O(n)O(n)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;（当数组已经有序时）。&lt;/li&gt;
&lt;li&gt;空间复杂度：&lt;strong&gt;&lt;span&gt;&lt;span&gt;O(1)O(1)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;，因为插入排序是原地排序算法。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;稳定性：插入排序是稳定的排序算法。
适用场景：适用于小规模数据集或部分有序的数据集。
优点：简单易实现，适合小数据集，具有稳定性。
缺点：对于大规模数据集效率较低。&lt;/p&gt;
&lt;h2&gt;归并排序（Merge Sort）&lt;a href=&quot;#归并排序merge-sort&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;归并排序是一种高效的排序算法，采用分治法（Divide and Conquer）策略。它将待排序的数组分成两半，分别对这两半进行排序，然后将排序好的两半合并在一起。&lt;/p&gt;
&lt;h3&gt;原理&lt;a href=&quot;#原理-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;将数组分成两半，递归地对每一半进行归并排序。&lt;/li&gt;
&lt;li&gt;当子数组的大小为 1 时，认为它们已经排序好。&lt;/li&gt;
&lt;li&gt;合并两个已排序的子数组，形成一个更大的已排序数组。&lt;/li&gt;
&lt;/ol&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/fengmian7.2.png&quot; alt=&quot;fengmian7.2.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;fengmian7.2.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div&gt;
归并排序
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;https://visualgo.net/zh/sorting&quot;&gt;几种排序演示&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;实例&lt;a href=&quot;#实例-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;假设有一个待排序的列表 [38, 27, 43, 3, 9, 82, 10]，归并排序的过程如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;初始状态&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;待排序部分：[38, 27, 43, 3, 9, 82, 10]&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分割阶段&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;将列表分成两半：[38, 27, 43] 和 [3, 9, 82, 10]&lt;/li&gt;
&lt;li&gt;继续分割：
&lt;ul&gt;
&lt;li&gt;[38, 27, 43] 分成 [38] 和 [27, 43]&lt;/li&gt;
&lt;li&gt;[27, 43] 分成 [27] 和 [43]&lt;/li&gt;
&lt;li&gt;[3, 9, 82, 10] 分成 [3, 9] 和 [82, 10]&lt;/li&gt;
&lt;li&gt;[3, 9] 分成 [3] 和 [9]&lt;/li&gt;
&lt;li&gt;[82, 10] 分成 [82] 和 [10]&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;合并阶段&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;合并 [27] 和 [43] 得到 [27, 43]&lt;/li&gt;
&lt;li&gt;合并 [38] 和 [27, 43] 得到 [27, 38, 43]&lt;/li&gt;
&lt;li&gt;合并 [3] 和 [9] 得到 [3, 9]&lt;/li&gt;
&lt;li&gt;合并 [82] 和 [10] 得到 [10, 82]&lt;/li&gt;
&lt;li&gt;合并 [3, 9] 和 [10, 82] 得到 [3, 9, 10, 82]&lt;/li&gt;
&lt;li&gt;最后合并 [27, 38, 43] 和 [3, 9, 10, 82]&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;得到最终排序结果 [3, 9, 10, 27, 38, 43, 82]&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;实现&lt;a href=&quot;#实现-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;以下是插入排序的 Java 实现代码：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; MergeSort&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; mergeSort&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; arr&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; left&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; right&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;left &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; right&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            int&lt;/span&gt;&lt;span&gt; mid &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;left &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; right&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; /&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            mergeSort&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;arr&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; left&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; mid&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            mergeSort&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;arr&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; mid &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; right&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            merge&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;arr&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; left&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; mid&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; right&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; merge&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; arr&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; left&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; mid&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; right&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        int&lt;/span&gt;&lt;span&gt; n1 &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; mid &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; left &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        int&lt;/span&gt;&lt;span&gt; n2 &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; right &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; mid&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        int&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; L &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;n1&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        int&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; R &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;n2&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; n1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            L&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; arr&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;left &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; j &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; j &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; n2&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; j&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            R&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;j&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; arr&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;mid &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; j&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        int&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; j &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        int&lt;/span&gt;&lt;span&gt; k &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; left&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        while&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;i &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; n1 &lt;/span&gt;&lt;span&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt; j &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; n2&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; &amp;lt;=&lt;/span&gt;&lt;span&gt; R&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;j&lt;/span&gt;&lt;span&gt;])&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                arr&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;k&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; L&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                i&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            }&lt;/span&gt;&lt;span&gt; else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                arr&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;k&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; R&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;j&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                j&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            k&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        while&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;i &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; n1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            arr&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;k&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; L&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            i&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            k&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        while&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;j &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; n2&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            arr&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;k&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; R&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;j&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            j&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            k&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;复杂度分析&lt;a href=&quot;#复杂度分析-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;时间复杂度：最坏情况下为 &lt;strong&gt;&lt;span&gt;&lt;span&gt;O(nlog⁡n)O(n \log n)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;lo&lt;span&gt;g&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;，平均情况下为 &lt;strong&gt;&lt;span&gt;&lt;span&gt;O(nlog⁡n)O(n \log n)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;lo&lt;span&gt;g&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;，最好情况下为 &lt;strong&gt;&lt;span&gt;&lt;span&gt;O(nlog⁡n)O(n \log n)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;lo&lt;span&gt;g&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;空间复杂度：&lt;strong&gt;&lt;span&gt;&lt;span&gt;O(n)O(n)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;，因为归并排序需要额外的存储空间来存放临时数组。&lt;/li&gt;
&lt;li&gt;稳定性：归并排序是稳定的排序算法。&lt;/li&gt;
&lt;li&gt;适用场景：适用于大规模数据集，尤其是需要稳定排序的场景。&lt;/li&gt;
&lt;li&gt;优点：时间复杂度稳定，适合大数据集，具有稳定性。&lt;/li&gt;
&lt;li&gt;缺点：需要额外的存储空间，空间复杂度较高。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;时间复杂度稳定指的是无论输入数据的初始顺序如何，无论数组每次被分成几部分，归并排序的时间复杂度始终保持在 &lt;strong&gt;&lt;span&gt;&lt;span&gt;O(nlog⁡n)O(n \log n)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;O&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;lo&lt;span&gt;g&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;，这使得它在处理各种类型的数据时表现一致。&lt;/p&gt;</content:encoded><category>category:学习笔记</category><category>category:排序</category><category>tag:插入排序</category><category>tag:归并排序</category><category>tag:Java</category></item><item><title>【学习笔记】逻辑门电路</title><link>https://www.weisifengbuxi.top/post/7b8c168a</link><guid isPermaLink="false">7b8c168a</guid><description>下周一要考试，因此通过这篇文件对逻辑门电路进行一个简单的复习和总结。 逻辑门电路简介 1937 年 克劳德・香农(Claude Shannon) 在硕士论文中提出，电气开关可用于实现布尔逻辑，这是连接电子元件与逻辑运算的关键理论突破。 基本逻辑门电路 逻辑门的本质 ：是实现布尔函数的数字电路，接收 </description><pubDate>Wed, 22 Oct 2025 00:29:00 GMT</pubDate><content:encoded>&lt;p&gt;下周一要考试，因此通过这篇文件对逻辑门电路进行一个简单的复习和总结。&lt;/p&gt;
&lt;h2&gt;逻辑门电路简介&lt;a href=&quot;#逻辑门电路简介&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;1937 年&lt;strong&gt;克劳德・香农(Claude Shannon)&lt;/strong&gt; 在硕士论文中提出，电气开关可用于实现布尔逻辑，这是连接电子元件与逻辑运算的关键理论突破。&lt;/p&gt;
&lt;h3&gt;基本逻辑门电路&lt;a href=&quot;#基本逻辑门电路&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;逻辑门的本质&lt;/strong&gt;：是实现布尔函数的数字电路，接收 2 个或多个输入信号，输出基于布尔运算的结果，实际由 &lt;strong&gt;1-6 个晶体管&lt;/strong&gt;组成，但被视为独立功能单元。&lt;/p&gt;
&lt;h3&gt;基础逻辑门及实现&lt;a href=&quot;#基础逻辑门及实现&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;非门（Inverter）&lt;/strong&gt;：用 CMOS 晶体管实现，输入为 0（0V）时，N 型管断开、P 型管导通，输出 1（2.9V）；输入为 1 时则相反。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;或门与或非门&lt;/strong&gt;：或非门直接通过晶体管组合实现，或门可基于或非门进一步搭建，二者均遵循 “有 1 出 1（或非门为有 1 出 0）” 的逻辑规则。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;与门与与非门&lt;/strong&gt;：与非门通过多组晶体管串联 / 并联实现，与门可基于与非门搭建，遵循 “全 1 出 1（与非门为全 1 出 0）” 的逻辑规则。&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/fengmian6.1.png&quot; alt=&quot;fengmian6.1.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;fengmian6.1.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div&gt;
三种逻辑门电路示意图
&lt;/div&gt;
&lt;h3&gt;通用逻辑门&lt;a href=&quot;#通用逻辑门&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;定义：可独立实现任何布尔函数，无需依赖其他类型逻辑门。
代表类型：NAND（与非门）和 NOR（或非门），因成本低、易制造，成为集成电路中最基础的门电路。&lt;/p&gt;
&lt;h2&gt;组合逻辑电路&lt;a href=&quot;#组合逻辑电路&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;逻辑门&lt;a href=&quot;#逻辑门&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;逻辑门是电路的&lt;strong&gt;基本构建块&lt;/strong&gt;
定义：小型电子设备，用于计算二值信号（0/1）的逻辑函数，是组合电路的基础单元。&lt;/p&gt;
&lt;p&gt;常见类型：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基本门：AND（仅双输入为 1 时输出 1）、OR（至少一个输入为 1 时输出 1）、NOT（输入取反，又称反相器）；&lt;/li&gt;
&lt;li&gt;扩展门：XOR（异或，输入不同时输出 1，用于加法器）、NAND（与非，AND 后取反，属 “通用门” 可构建其他门）、NOR（或非，OR 后取反，亦为通用门）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;布尔函数的三种等价表示&lt;a href=&quot;#布尔函数的三种等价表示&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;布尔函数是组合电路的数学描述，有三种表示形式逻辑等价，可相互转换&lt;/p&gt;

















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;表示形式&lt;/th&gt;&lt;th&gt;核心作用&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;真值表&lt;/td&gt;&lt;td&gt;用逻辑运算符（ &lt;span&gt;&lt;span&gt;⋅/AND\cdot /AND&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;⋅&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;A&lt;/span&gt;&lt;span&gt;N&lt;/span&gt;&lt;span&gt;D&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 、&lt;span&gt;&lt;span&gt;+/OR+ /OR&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;OR&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 、 &lt;span&gt;&lt;span&gt;¬/NOT\neg /NOT&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;¬/&lt;/span&gt;&lt;span&gt;NOT&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 、 &lt;span&gt;&lt;span&gt;⊕/XOR\oplus /XOR&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;⊕&lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt;XOR&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; ）描述输入与输出的数学关系（如 XOR：Q=A⊕B）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;逻辑电路&lt;/td&gt;&lt;td&gt;用逻辑门物理连接实现布尔函数，是表达式的硬件映射&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;典型组合电路实例&lt;a href=&quot;#典型组合电路实例&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;加法器&lt;a href=&quot;#加法器&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;加法器是实现二进制加法的基础电路，按输入位数分为三类&lt;/p&gt;
&lt;h4&gt;半加器（Half Adder）&lt;a href=&quot;#半加器half-adder&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;功能&lt;/strong&gt;：仅计算 2 个 1 位二进制数（A、B）的和，输出 “和（S）” 与 “进位（C）”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;逻辑表达式&lt;/strong&gt;：S = &lt;span&gt;&lt;span&gt;A⊕BA \oplus B&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;A&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;⊕&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;（异或）、C = A・B（与）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;电路结构&lt;/strong&gt;：1 个 XOR 门（算和）+ 1 个 AND 门（算进位）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;全加器（Full Adder）&lt;a href=&quot;#全加器full-adder&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;功能&lt;/strong&gt;：计算 3 个 1 位二进制数（A、B、进位输入 Cin），解决半加器无法处理 “来自低位进位” 的问题，输出 S 和进位输出 Cout&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;电路结构&lt;/strong&gt;：由 2 个半加器串联（第一个算 A+B 的和与进位，第二个结合 Cin 算最终 S，两个进位通过 OR 门输出 Cout）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;4 位 ripple-carry 加法器&lt;a href=&quot;#4-位-ripple-carry-加法器&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;功能&lt;/strong&gt;：计算两个 4 位二进制数的和，将全加器 “级联” 实现（文档 1）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结构&lt;/strong&gt;：4 个全加器串联，前一个全加器的 Cout 接后一个的 Cin，初始 Cin=0&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;缺点&lt;/strong&gt;：进位信号 “逐位传递”，速度慢（ripple 即 “ ripple 延迟”）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;解码器（Decoder）&lt;div&gt;&lt;/div&gt;&lt;a href=&quot;#解码器decoder&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;功能&lt;/strong&gt;：n 个输入对应 2ⁿ个输出，对任意输入组合，仅 “唯一 1 个输出” 为 1（其余为 0），实现 “输入到输出的选择映射”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;典型应用&lt;/strong&gt;：计算机内存地址解码 —— 当 CPU 访问内存时，解码器将二进制地址信号转换为 “唯一内存单元的选中信号”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;示例&lt;/strong&gt;：2-4 解码器（2 输入 A、B，4 输出 Y0-Y3），逻辑表达式如 &lt;span&gt;&lt;span&gt;Y0=A・¬B、Y1=¬A・BY0=A・\neg B、Y1=\neg A・B&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Y&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;A&lt;/span&gt;&lt;span&gt;・&lt;/span&gt;&lt;span&gt;¬&lt;/span&gt;&lt;span&gt;B&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;Y&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;¬&lt;/span&gt;&lt;span&gt;A&lt;/span&gt;&lt;span&gt;・&lt;/span&gt;&lt;span&gt;B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 等&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;多路复用器（Multiplexer, MUX）&lt;div&gt;&lt;/div&gt;&lt;a href=&quot;#多路复用器multiplexer-mux&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;功能&lt;/strong&gt;：“通道选择器”，从 n 个输入中选 1 个输出，选择由 log₂n 个 “控制端” 决定&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;示例&lt;/strong&gt;：4-to-1 MUX（4 输入 I0-I3，2 控制端 S1、S0）—— 通过 S1S0 的 4 种组合（00-11），分别选择 I0-I3 输出&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;核心作用&lt;/strong&gt;：在数字系统中实现 “数据路由”，如 CPU 内部数据选择、总线数据传输&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;算术逻辑单元（ALU）&lt;div&gt;&lt;/div&gt;&lt;a href=&quot;#算术逻辑单元alu&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;功能&lt;/strong&gt;：实现基本算术（加法、减法）和逻辑运算（AND、OR），是 CPU 的核心组件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结构示例&lt;/strong&gt;：1 位 ALU 结合全加器实现加法，2 位 ALU 通过级联 1 位 ALU + 解码器，增加 “溢出（Overflow）” 检测功能&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;组合电路的分析与设计流程&lt;a href=&quot;#组合电路的分析与设计流程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;分析流程&lt;a href=&quot;#分析流程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;核心目标：已知电路结构，推导其实现的布尔函数（文档 1），步骤为:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;标记电路输入、输出及中间门的输出&lt;/li&gt;
&lt;li&gt;从输入到输出，逐步写出每个门的逻辑表达式&lt;/li&gt;
&lt;li&gt;化简表达式，结合真值表验证逻辑功能&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;设计流程&lt;a href=&quot;#设计流程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;核心目标&lt;/strong&gt;：已知功能需求，构建电路，标准 5 步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;需求转真值表&lt;/strong&gt;：根据功能描述，枚举所有输入组合及对应输出（如 1 位比较器需列出 A、B 的 4 种组合与 G/E/L 的关系）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;导出布尔表达式&lt;/strong&gt;：从真值表中提取 “输出为 1” 的输入组合，写出 “积之和（SOP）” 表达式&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;表达式最小化&lt;/strong&gt;：用卡诺图（Karnaugh Map）简化 SOP 表达式，减少门的数量，优化电路&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;门级实现&lt;/strong&gt;：用逻辑门搭建简化后的表达式（如 1 位比较器用 AND、OR、NOT 门实现 &lt;span&gt;&lt;span&gt;G=A・¬B、E=A・B+¬A・¬BG=A・ \neg B、E=A・B+ \neg A・\neg B&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;G&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;A&lt;/span&gt;&lt;span&gt;・&lt;/span&gt;&lt;span&gt;¬&lt;/span&gt;&lt;span&gt;B&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;E&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;A&lt;/span&gt;&lt;span&gt;・&lt;/span&gt;&lt;span&gt;B&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;¬&lt;/span&gt;&lt;span&gt;A&lt;/span&gt;&lt;span&gt;・&lt;/span&gt;&lt;span&gt;¬&lt;/span&gt;&lt;span&gt;B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证&lt;/strong&gt;：通过真值表或仿真，确认电路功能符合需求&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;设计实例：1 位比较器&lt;a href=&quot;#设计实例1-位比较器&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;需求&lt;/strong&gt;：比较两个 1 位二进制数 A、B，输出 G（A&amp;gt;B）、E（A=B）、L（A&amp;lt;B）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;真值表&lt;/strong&gt;：&lt;/li&gt;
&lt;/ul&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;输入 A&lt;/th&gt;&lt;th&gt;输入 B&lt;/th&gt;&lt;th&gt;输出 G（A&amp;gt;B）&lt;/th&gt;&lt;th&gt;输出 E（A=B）&lt;/th&gt;&lt;th&gt;输出 L（A&amp;lt;B）&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;简化表达式：&lt;span&gt;&lt;span&gt;G=A⋅¬B、E=A⋅B+¬A⋅¬B、L=¬A⋅BG=A·\neg B、E=A·B + \neg A·\neg B、L=\neg A·B&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;G&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;A&lt;/span&gt;&lt;span&gt;⋅&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;¬&lt;/span&gt;&lt;span&gt;B&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;E&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;A&lt;/span&gt;&lt;span&gt;⋅&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;B&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;¬&lt;/span&gt;&lt;span&gt;A&lt;/span&gt;&lt;span&gt;⋅&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;¬&lt;/span&gt;&lt;span&gt;B&lt;/span&gt;&lt;span&gt;、&lt;/span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;¬&lt;/span&gt;&lt;span&gt;A&lt;/span&gt;&lt;span&gt;⋅&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;电路实现：用 2 个 AND 门（实现 G、L）、1 个 OR 门 + 2 个 AND 门（实现 E）搭建&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;集成电路（IC）与应用场景&lt;a href=&quot;#集成电路ic与应用场景&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;集成电路&lt;a href=&quot;#集成电路&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;定义&lt;/strong&gt;：将大量晶体管（及逻辑门）集成到单个小型芯片中，是组合电路的实际载体&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;分类&lt;/strong&gt;：按门数量分为小规模（SSI，如单个门）、中规模（MSI，如加法器、解码器）、大规模（LSI）等&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;核心应用&lt;a href=&quot;#核心应用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;组合电路是数字革命的关键组件，应用于&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;数字计算：计算器、CPU 的 ALU&lt;/li&gt;
&lt;li&gt;数据处理：数字信号处理（DSP）、总线数据路由（MUX/Decoder）&lt;/li&gt;
&lt;li&gt;存储控制：内存地址解码&lt;/li&gt;
&lt;li&gt;智能设备：机器人控制、数字通信（信号编码 / 解码）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;单元核心总结&lt;a href=&quot;#单元核心总结&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;本质&lt;/strong&gt;：组合电路是 “无记忆的数字逻辑模块”，输出仅依赖当前输入，由逻辑门按布尔函数构建&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关键实例&lt;/strong&gt;：加法器（半加器→全加器→4 位加法器）、解码器、MUX、ALU，覆盖算术运算、数据选择、逻辑比较核心需求&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工程逻辑&lt;/strong&gt;：分析（电路→函数）与设计（需求→电路）需依托真值表、布尔表达式、卡诺图，核心是 “简化与验证”&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;价值&lt;/strong&gt;：是计算机、数字设备的基础，支撑从简单运算到复杂数据处理的所有数字功能。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;时序电路&lt;a href=&quot;#时序电路&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;基础&lt;a href=&quot;#基础&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;核心定义：区别于组合电路&lt;/p&gt;

























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;对比维度&lt;/th&gt;&lt;th&gt;组合电路（Combinational）&lt;/th&gt;&lt;th&gt;时序电路（Sequential）&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;输出依赖&lt;/td&gt;&lt;td&gt;仅依赖&lt;strong&gt;当前输入&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;依赖&lt;strong&gt;当前输入&lt;/strong&gt; + &lt;strong&gt;历史状态（前序输入）&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;记忆性&lt;/td&gt;&lt;td&gt;无记忆（memoryless）&lt;/td&gt;&lt;td&gt;有记忆（可 “记住” 前序输入）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;核心需求&lt;/td&gt;&lt;td&gt;实现算术 / 逻辑运算（如 ALU、加法器）&lt;/td&gt;&lt;td&gt;实现存储、计数、时序控制（如寄存器、计数器）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;时序电路本质是 “组合电路 + 存储器”，其中一种结构如下图所示：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/shixudianlu.png&quot; alt=&quot;shixudianlu.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;shixudianlu.png&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
SR-NOR 锁存器
&lt;/div&gt;
&lt;h3&gt;存储器的基本要求（以 1 位存储器为例）&lt;a href=&quot;#存储器的基本要求以-1-位存储器为例&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;可写（Write）：能修改存储的二进制值（0→1 或 1→0）&lt;/li&gt;
&lt;li&gt;可保持（Hold）：无修改操作时，能稳定保留当前值&lt;/li&gt;
&lt;li&gt;可读（Read）：能获取存储的当前值&lt;/li&gt;
&lt;li&gt;最小存储单元：1 位存储器（存储 0 或 1）&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;基础存储单元：锁存器与触发器&lt;a href=&quot;#基础存储单元锁存器与触发器&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;时序电路的 “记忆核心” 是&lt;strong&gt;锁存器（Latch）&lt;/strong&gt; 和&lt;strong&gt;触发器（Flip-flop）&lt;/strong&gt;，二者均基于 “反馈” 实现记忆（电路输出反馈至输入）。&lt;/p&gt;
&lt;h3&gt;反馈：记忆的原理&lt;a href=&quot;#反馈记忆的原理&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;反馈是时序电路实现记忆的关键：将电路输出信号回传至输入，使输出状态能 “自我维持”（如 Q=0 时持续输出 0，Q=1 时持续输出 1）&lt;/li&gt;
&lt;li&gt;但单纯反馈无法修改状态，需额外控制信号（如 Set/Reset）实现 “写操作”&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;SR 锁存器（Set/Reset Latch）：最基础的时序单元&lt;a href=&quot;#sr-锁存器setreset-latch最基础的时序单元&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h4&gt;核心功能&lt;a href=&quot;#核心功能&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;通过 Set（置 1）和 Reset（置 0）信号控制 1 位存储，是时序电路的 “基础积木”（类似组合电路的逻辑门）。&lt;/p&gt;
&lt;h4&gt;类型与特性&lt;a href=&quot;#类型与特性&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;类型&lt;/th&gt;&lt;th&gt;核心组件&lt;/th&gt;&lt;th&gt;特性表（Q (t+1) 为下一状态，Q (t) 为当前状态）&lt;/th&gt;&lt;th&gt;关键问题&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;SR-NOR 锁存器&lt;/td&gt;&lt;td&gt;2 个 NOR 门交叉连接&lt;/td&gt;&lt;td&gt;S=0,R=0：Q (t+1)=Q (t)（保持）S=0,R=1：Q (t+1)=0（置 0） S=1,R=0：Q (t+1)=1（置 1）S=1,R=1：undefined（非法状态）&lt;/td&gt;&lt;td&gt;S=1,R=1 时，Q 与 &lt;span&gt;&lt;span&gt;¬Q\neg Q&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;¬&lt;/span&gt;&lt;span&gt;Q&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 均为 1（逻辑矛盾，不稳定）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SR-NAND 锁存器&lt;/td&gt;&lt;td&gt;2 个 NAND 门交叉连接&lt;/td&gt;&lt;td&gt;S=0,R=0：undefined（非法） S=0,R=1：Q=1（置 1） S=1,R=0：Q=0（置 0） S=1,R=1：保持&lt;/td&gt;&lt;td&gt;非法状态为 S=0,R=0&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;SR-NOR 锁存器即为上图所示，SR-NAND 锁存器则是用 NAND 门实现，因此逻辑相反（Set/Reset 信号为低电平有效）。&lt;/p&gt;
&lt;h3&gt;触发器（Flip-flop）&lt;a href=&quot;#触发器flip-flop&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h4&gt;核心区别&lt;a href=&quot;#核心区别&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;锁存器（Latch）&lt;/strong&gt;：电平触发（EN 为高 / 低电平时持续响应输入，状态随输入变化）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;触发器（Flip-flop）&lt;/strong&gt;：边沿触发（仅在时钟信号的 “上升沿” 或 “下降沿” 瞬间响应输入，状态稳定，无毛刺）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;关键类型&lt;/code&gt;
&lt;strong&gt;JK 触发器&lt;/strong&gt;：解决 SR 锁存器的非法状态&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;结构：SR 触发器 + 反馈逻辑，确保 S 和 R 不同时有效&lt;/li&gt;
&lt;li&gt;特性表：
&lt;ul&gt;
&lt;li&gt;J=0,K=0：保持 Q (t+1)=Q (t)&lt;/li&gt;
&lt;li&gt;J=0,K=1：置 0 Q (t+1)=0&lt;/li&gt;
&lt;li&gt;J=1,K=0：置 1 Q (t+1)=1&lt;/li&gt;
&lt;li&gt;J=1,K=1：翻转 Q (t+1)= &lt;span&gt;&lt;span&gt;¬Q(t)\neg Q (t)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;¬&lt;/span&gt;&lt;span&gt;Q&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;strong&gt;（核心优势，可用于计数）&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;D 触发器&lt;/strong&gt;：真正的 1 位存储器&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;问题：SR/JK 触发器需 2 个控制端（S/R 或 J/K），操作复杂&lt;/li&gt;
&lt;li&gt;设计：仅 1 个数据端（D）+ 时钟端，时钟触发时 Q=D（直接存储 D 的值）&lt;/li&gt;
&lt;li&gt;优势：无非法状态，是计算机物理内存的 “最小单元”，满足 “写 - 保持 - 读” 全部需求&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;时钟系统&lt;a href=&quot;#时钟系统&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h4&gt;时钟的定义与作用&lt;a href=&quot;#时钟的定义与作用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;定义：产生周期性电脉冲的电路，速度单位为兆赫兹（MHz，百万脉冲 / 秒）&lt;/li&gt;
&lt;li&gt;核心作用：控制时序电路的状态更新时机，确保所有存储单元 “同步工作”，避免状态混乱&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;时钟触发方式&lt;a href=&quot;#时钟触发方式&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;




















&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;触发类型&lt;/th&gt;&lt;th&gt;触发时机&lt;/th&gt;&lt;th&gt;适用场景&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;边沿触发&lt;/td&gt;&lt;td&gt;时钟脉冲的 “上升沿”（低→高）或 “下降沿”（高→低）瞬间&lt;/td&gt;&lt;td&gt;触发器（如 D/JK 触发器），状态稳定&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;电平触发&lt;/td&gt;&lt;td&gt;时钟信号持续为高 / 低电平时&lt;/td&gt;&lt;td&gt;锁存器，响应速度快但易受毛刺影响&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;时序电路典型应用&lt;a href=&quot;#时序电路典型应用&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h4&gt;寄存器（Register）&lt;a href=&quot;#寄存器register&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;功能&lt;/strong&gt;：存储一组二进制数（如 4 位、8 位），是 CPU 内部临时存储数据的核心&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;结构&lt;/strong&gt;：由多个 D 触发器串联组成（如 4 位寄存器 = 4 个 D 触发器，共享时钟和写使能）&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;关键信号&lt;a href=&quot;#关键信号&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;数据端（D3~D0）：输入 4 位数据
写使能（WE）：WE=1 时允许写入，WE=0 时保持数据
清零端（Clear）：将所有触发器置 0（初始化）&lt;/p&gt;
&lt;h4&gt;二进制计数器（Binary Counter）&lt;a href=&quot;#二进制计数器binary-counter&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;原理：用 JK 触发器的 “翻转特性”（J=K=1 时 Q=&lt;span&gt;&lt;span&gt;¬Q\neg Q&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;¬&lt;/span&gt;&lt;span&gt;Q&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;），通过时钟同步级联
4 位计数器示例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;4 个 JK 触发器级联，低位触发器的 Q 端接高位触发器的时钟端&lt;/li&gt;
&lt;li&gt;每来一个时钟脉冲，最低位（B0）翻转，低位从 1→0 时高位翻转（如 0000→0001→0010→……→1111）&lt;/li&gt;
&lt;li&gt;状态方程：
&lt;ul&gt;
&lt;li&gt;B0 (t+1) = &lt;span&gt;&lt;span&gt;¬B0(t)\neg B0 (t)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;¬&lt;/span&gt;&lt;span&gt;B&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;B1 (t+1) = B1 (t) &lt;span&gt;&lt;span&gt;⊕\oplus&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;⊕&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; B0 (t)&lt;/li&gt;
&lt;li&gt;B2 (t+1) = B2 (t) &lt;span&gt;&lt;span&gt;⊕\oplus&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;⊕&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; (B1 (t)・B0 (t))&lt;/li&gt;
&lt;li&gt;高位同理，实现 “逢 2 进 1”&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;内存（Memory）&lt;a href=&quot;#内存memory&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;h4&gt;基础结构：4x3 内存示例&lt;a href=&quot;#基础结构4x3-内存示例&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;存储单元&lt;/strong&gt;：每个 “字（Word）”=3 位，共 4 个 word（Word0~Word3）
&lt;strong&gt;组成&lt;/strong&gt;：3 个 D 触发器 /word + 解码器（地址选择） + 写使能&lt;/p&gt;
&lt;h3&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;时序电路的本质：&lt;strong&gt;组合电路 + 存储器 + 时钟&lt;/strong&gt;，具备记忆功能；
基础存储单元：锁存器（电平触发）→ 触发器（边沿触发，如 D/JK 触发器）；
典型应用：寄存器（CPU 临时存储）、计数器（计数 / 定时）、内存（大规模存储）；
时钟的关键：同步状态更新，避免时序混乱。&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;这篇文章写的很不满意，主要是时间太紧了，导致很多概念没有完全理解，更多的是依靠 ai。后续 rw 会修改的。&lt;/p&gt;
&lt;/div&gt;</content:encoded><category>category:学习笔记</category><category>category:理论学习</category><category>tag:逻辑门</category><category>tag:组合电路</category><category>tag:时序电路</category><category>tag:集成电路</category></item><item><title>【学习笔记】链表、栈、队列的实现方法</title><link>https://www.weisifengbuxi.top/post/6650a8f9</link><guid isPermaLink="false">6650a8f9</guid><description>链表（Linked List） 、 栈（Stack） 、 队列（Queue） 是数据结构中最基础的三大结构（还有一个是数组）。 熟悉并掌握 数据结构和算法是合格程序员基本功之一，不同的结构在不同的应用场景中往往会带来不一样的 处理效率 。之前文章中已经介绍了链表，本文将介绍栈和队列，以及这三种结构的</description><pubDate>Wed, 15 Oct 2025 21:30:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;链表（Linked List）&lt;/strong&gt;、&lt;strong&gt;栈（Stack）&lt;/strong&gt;、&lt;strong&gt;队列（Queue）&lt;strong&gt;是数据结构中最基础的三大结构（还有一个是数组）。&lt;strong&gt;熟悉并掌握&lt;/strong&gt;数据结构和算法是合格程序员基本功之一，不同的结构在不同的应用场景中往往会带来不一样的&lt;/strong&gt;处理效率&lt;/strong&gt;。之前文章中已经介绍了链表，本文将介绍栈和队列，以及这三种结构的&lt;strong&gt;实现方法&lt;/strong&gt;。&lt;/p&gt;
&lt;h2&gt;栈和队列&lt;a href=&quot;#栈和队列&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;栈&lt;a href=&quot;#栈&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;栈（stack）&lt;strong&gt;又名&lt;/strong&gt;堆栈&lt;/strong&gt;，它是一种运算受限的&lt;strong&gt;线性表&lt;/strong&gt;。限定仅在&lt;strong&gt;表尾&lt;/strong&gt;进行插入和删除操作的线性表。这一端被称为&lt;strong&gt;栈顶&lt;/strong&gt;，相对地，把另一端称为&lt;strong&gt;栈底&lt;/strong&gt;。向一个栈插入新元素又称作&lt;strong&gt;进栈&lt;/strong&gt;、&lt;strong&gt;入栈&lt;/strong&gt;或&lt;strong&gt;压栈&lt;/strong&gt;，它是把新元素放到&lt;strong&gt;栈顶元素&lt;/strong&gt;的上面，使之成为新的栈顶元素；从一个栈删除元素又称作&lt;strong&gt;出栈&lt;/strong&gt;或&lt;strong&gt;退栈&lt;/strong&gt;，它是把栈顶元素删除掉，使其&lt;strong&gt;相邻的元素&lt;/strong&gt;成为新的栈顶元素。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/fengmian6.png&quot; alt=&quot;fengmian6.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;fengmian6.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div&gt;
&lt;p&gt;栈 示意图&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;栈，通俗地说，就像我们往一个杯子里面放东西一样，先放进去的放在最下面，只有把上面的东西拿出来后才能拿出下面压着的东西。&lt;/p&gt;
&lt;p&gt;栈，具有很多用处，计算机中很多处理都是通过栈这种数据结构来进行的，比如&lt;strong&gt;算术运算&lt;/strong&gt;，准备两个栈，一个栈存储&lt;strong&gt;数字&lt;/strong&gt;，一个栈存储&lt;strong&gt;符号&lt;/strong&gt;，从头开始依次把字符&lt;strong&gt;对应&lt;/strong&gt;压入到这两个栈中，当所有字符都放入栈之后，&lt;strong&gt;依次&lt;/strong&gt;从数字栈中取出两个元素，并从&lt;strong&gt;符号栈&lt;/strong&gt;中取出一个元素，进行计算，结果压回&lt;strong&gt;数字栈&lt;/strong&gt;，继续以此运行，直到符号栈为空，或者数字栈只剩下一个元素为止，弹出这个数字即为&lt;strong&gt;最后的结果&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;这么说很抽象，后面以实际题目进行讲解。&lt;/p&gt;
&lt;h4&gt;实现方法&lt;a href=&quot;#实现方法&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;可以用数组（连续的内存空间，按索引取值）来实现栈。&lt;/p&gt;
&lt;p&gt;栈的基本方法只有两个，分别为入栈（Push）元素和出栈（Pop）。&lt;/p&gt;
&lt;p&gt;以 &lt;code&gt;Lab3&lt;/code&gt; 作为例题，题目如下：&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/fengmian6.2.jpg&quot; alt=&quot;fengmian6.2.jpg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;fengmian6.2.jpg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div&gt;
&lt;p&gt;链表 UML 图&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;method&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;public Stack(int size)
&lt;ul&gt;
&lt;li&gt;Creates an empty stack whose capacity is size（构造方法，初始化栈，参数 size 指定栈的大小。）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;public boolean isEmpty()
&lt;ul&gt;
&lt;li&gt;Returns true if the stack is empty and false otherwise （判断栈是否为空）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;public boolean isFull()
&lt;ul&gt;
&lt;li&gt;Returns true if the stack is full and false otherwise（判断栈是否已满）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;public Double top()
&lt;ul&gt;
&lt;li&gt;Returns the top element （获取栈顶元素）&lt;/li&gt;
&lt;li&gt;Returns null if the stack is empty （如果栈为空则返回 null）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;public Double push(double x)
&lt;ul&gt;
&lt;li&gt;Adds a new element with value x to the top of the stack （将新元素 x 压入栈顶）&lt;/li&gt;
&lt;li&gt;Returns the new element if the operation is successful and null otherwise （如果操作成功则返回新元素，否则返回 null）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;public Double pop()
&lt;ul&gt;
&lt;li&gt;Removes and returns the top element of the stack （弹出栈顶元素并返回该元素）&lt;/li&gt;
&lt;li&gt;Returns null if the operation fails （如果操作失败则返回 null）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;public void displayStack()
&lt;ul&gt;
&lt;li&gt;Displays all elements in the stack from top to bottom （从栈顶到栈底显示栈中所有元素）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这是老师给的模板，在此基础上进行实现：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; Stack&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	/* YOUR CODE HERE*/&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; args&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		Stack&lt;/span&gt;&lt;span&gt; myStack &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Stack&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;myStack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;isEmpty&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myStack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myStack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;The stack has 2 items:&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myStack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;displayStack&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myStack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myStack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myStack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;The stack has 4 items:&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myStack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;displayStack&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;The top is: &quot;&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; myStack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;top&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;myStack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;isFull&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myStack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;pop&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myStack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;pop&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myStack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;pop&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myStack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;pop&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;The stack is empty:&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myStack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;displayStack&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;我们定义一个 double 类型数组 &lt;strong&gt;values&lt;/strong&gt; 来存储栈中的元素，一个整型变量 &lt;strong&gt;top&lt;/strong&gt; 来表示栈顶元素在数组中的索引位置。初始时，栈为空，&lt;strong&gt;top&lt;/strong&gt; 设置为 -1。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    private&lt;/span&gt;&lt;span&gt; Double&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	private&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; top&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; Stack&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; size&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;values &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Double&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;size&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		top &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; -&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;对于 &lt;strong&gt;isEmpty&lt;/strong&gt; 方法，只需要检查 &lt;strong&gt;top&lt;/strong&gt; 是否为 -1 即可：（注意 autolab 不允许使用中文注释）&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; boolean&lt;/span&gt;&lt;span&gt; isEmpty&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; top &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; -&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; //  或者 return this.top &amp;lt; 0; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;对于 &lt;strong&gt;isFull&lt;/strong&gt; 方法，需要检查 &lt;strong&gt;top&lt;/strong&gt; 是否等于数组的最后一个索引位置，即 &lt;strong&gt;values.length - 1&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; boolean&lt;/span&gt;&lt;span&gt; isFull&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; top &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;对于 &lt;strong&gt;top&lt;/strong&gt; 方法，需要返回栈顶元素，如果栈为空则返回 null：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; Double&lt;/span&gt;&lt;span&gt; top&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;isEmpty&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;top&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;对于 &lt;strong&gt;push&lt;/strong&gt; 方法，需要将新元素压入栈顶，如果栈已满则返回 null，否则将元素放入数组并更新 &lt;strong&gt;top&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; Double&lt;/span&gt;&lt;span&gt; push&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;isFull&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;top&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;对于 &lt;strong&gt;pop&lt;/strong&gt; 方法，需要弹出栈顶元素并返回它，如果栈为空则返回 null：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; Double&lt;/span&gt;&lt;span&gt; pop&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;isEmpty&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;top&lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后，对于 &lt;strong&gt;displayStack&lt;/strong&gt; 方法，这个根据个人爱好实现即可，这里提供一种方法：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; displayStack&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;top --&amp;gt;&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		for&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;top&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;&amp;gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;\t&lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;span&gt;\t&lt;/span&gt;&lt;span&gt; &quot;&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; String&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;format&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;%, .4f&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;].&lt;/span&gt;&lt;span&gt;doubleValue&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; &quot;&lt;/span&gt;&lt;span&gt;\t&lt;/span&gt;&lt;span&gt;|&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;\t&lt;/span&gt;&lt;span&gt;+-----------------------+&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后将上面的方法整合到 &lt;code&gt;Stack&lt;/code&gt; 类中即可，总的来说还是比较简单的。&lt;/p&gt;
&lt;h3&gt;队列&lt;a href=&quot;#队列&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;队列（queue）是只允许在一端进行插入操作，在另一端进行删除操作的线性表，队列的特点&lt;strong&gt;是先进先出（First In First Out）&lt;/strong&gt;，简称 FIFO。&lt;/p&gt;
&lt;p&gt;允许插入的一端称为队尾（rear），允许删除的一端称为队头(front)。&lt;/p&gt;
&lt;p&gt;向队列中插入新的数据元素称为入队。&lt;/p&gt;
&lt;p&gt;从队列中删除队头元素称为出队。&lt;/p&gt;
&lt;p&gt;和链表相比，队列更像是排队买票，先来的人先买到票，后来的只能在后面排队等待。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/fengmian6.3.webp&quot; alt=&quot;fengmian6.3.webp&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;fengmian6.3.webp&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;但是队列的实现相对复杂一些，因为队列的插入和删除操作分别在两端进行，如果使用普通的数组来实现队列，可能会出现数组前端有空闲空间但无法利用的情况。&lt;/p&gt;
&lt;p&gt;我们可以利用一种思路：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当项目排队时，后索引会向前移动&lt;/li&gt;
&lt;li&gt;当项目出队时，前索引也会向前移动一个元素&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样就将数组变成了循环数组（circular array），即当后索引到达数组末尾时，如果前索引不在数组起始位置，则可以将后索引重新指向数组起始位置，从而利用前端的空闲空间。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/fengmian6.4.webp&quot; alt=&quot;fengmian6.4.webp&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;fengmian6.4.webp&lt;/figcaption&gt;&lt;/figure&gt;
&lt;h4&gt;实现方法&lt;a href=&quot;#实现方法-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;与栈类似，队列可以用数组来实现队列。&lt;/p&gt;
&lt;p&gt;队列的基本方法也只有两个，分别为入队（enqueue）元素和出队（dequeue）。&lt;/p&gt;
&lt;p&gt;我们来看题目&lt;code&gt;Lab4&lt;/code&gt; 题目如下：&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/fengmian6.5.jpg&quot; alt=&quot;fengmian6.5.jpg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;fengmian6.5.jpg&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div&gt;
&lt;p&gt;队列 UML 图&lt;/p&gt;
&lt;/div&gt;  
&lt;p&gt;&lt;code&gt;method&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;public Queue(int size)
&lt;ul&gt;
&lt;li&gt;Creates an empty queue whose capacity is size（构造方法，初始化队列，参数 size 指定队列的大小。）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;public boolean isEmpty()
&lt;ul&gt;
&lt;li&gt;Returns true if the queue is empty and false otherwise （判断队列是否为空）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;public boolean isFull()
&lt;ul&gt;
&lt;li&gt;Returns true if the queue is full and false otherwise（判断队列是否已满）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;public Double enqueue(double x)
&lt;ul&gt;
&lt;li&gt;Adds a new element with value x to the rear of the queue （将新元素 x 插入队尾）&lt;/li&gt;
&lt;li&gt;Returns the new element if the operation is successful and null otherwise （如果操作成功则返回新元素，否则返回 null）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;public Double dequeue()
&lt;ul&gt;
&lt;li&gt;Removes and returns the front element of the queue （弹出队头元素并返回该元素）&lt;/li&gt;
&lt;li&gt;Returns null if the operation fails （如果操作失败则返回 null）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;public void displayQueue()&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;老师给的模板，在此基础上进行实现：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; Queue&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; args&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		Queue&lt;/span&gt;&lt;span&gt; myQueue &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Queue&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;myQueue&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;isEmpty&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myQueue&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;enqueue&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myQueue&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;enqueue&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myQueue&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;enqueue&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;The queue has 3 items: -2, 3, 1&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myQueue&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;displayQueue&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myQueue&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;enqueue&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myQueue&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;enqueue&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;The queue has 4 items: -2, 3, 1, 8&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;myQueue&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;isFull&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myQueue&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;displayQueue&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;span&gt;		&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myQueue&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;dequeue&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myQueue&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;dequeue&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;The queue has 2 items: 1, 8&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myQueue&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;displayQueue&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myQueue&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;dequeue&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myQueue&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;dequeue&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myQueue&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;dequeue&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;The queue is empty:&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myQueue&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;displayQueue&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;我们定义一个 integer 类型数组 &lt;strong&gt;values&lt;/strong&gt; 来存储队列中的元素，两个整型变量 &lt;strong&gt;front&lt;/strong&gt; 和 &lt;strong&gt;rear&lt;/strong&gt; 分别表示队头和队尾在数组中的索引位置。初始时，队列为空，&lt;strong&gt;front&lt;/strong&gt; 设置为 0， &lt;strong&gt;rear&lt;/strong&gt; 设置为 -1。此外还需要一个整型变量 &lt;strong&gt;counter&lt;/strong&gt; 来记录队列的当前大小。&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    private&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	private&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; front&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; rear&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; counter&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; CircularDeque&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; size&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		values &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;size&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		front &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		counter &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		rear &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; -&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;对于 &lt;strong&gt;isEmpty&lt;/strong&gt; 方法，只需要检查 &lt;strong&gt;counter&lt;/strong&gt; 是否为 0 即可：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; boolean&lt;/span&gt;&lt;span&gt; isEmpty&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; counter &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;对于 &lt;strong&gt;isFull&lt;/strong&gt; 方法，需要检查 &lt;strong&gt;counter&lt;/strong&gt; 是否等于数组的长度：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; boolean&lt;/span&gt;&lt;span&gt; isFull&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; counter &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;对于 &lt;strong&gt;enqueue&lt;/strong&gt; 方法，需要将新元素插入队尾，如果队列已满则返回 null，否则将元素放入数组并更新 &lt;strong&gt;rear&lt;/strong&gt; 和 &lt;strong&gt;counter&lt;/strong&gt;：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt; enqueue&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;isFull&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        rear &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;rear &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; %&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; //这一步是实现循环队列的关键，当 rear 到达数组末尾时，重新指向数组起始位置&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;rear&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        counter&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;对于 &lt;strong&gt;dequeue&lt;/strong&gt; 方法，需要弹出队头元素并返回它，如果队列为空则返回 null：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt; dequeue&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;isEmpty&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        Integer&lt;/span&gt;&lt;span&gt; value &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;front&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        front &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;front &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; %&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; // 同样实现循环队列&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        counter&lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; value&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;最后，对于 &lt;strong&gt;displayQueue&lt;/strong&gt; 方法，这个根据个人爱好实现即可，这里依旧提供一种方法：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; displayQueue&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;isEmpty&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Empty queue!&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;front-&amp;gt; &quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; front&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;&amp;lt;=&lt;/span&gt;&lt;span&gt; rear&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; i&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;i &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; front&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;\t&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;i &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				i &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			}&lt;/span&gt;&lt;span&gt; else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;printf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;|&lt;/span&gt;&lt;span&gt;\t&lt;/span&gt;&lt;span&gt;%7.4f        |&quot;&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;i &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;					System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;\n&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;&amp;lt;-rear&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;最后将上面的方法整合到 &lt;code&gt;Queue&lt;/code&gt; 类中即可，有了链表的基础，实现起来还是不难的。&lt;/p&gt;
&lt;p&gt;本文当然不会只是介绍实现方法，有请 assignment 登场。&lt;/p&gt;
&lt;h2&gt;链表、栈、队列的进阶&lt;a href=&quot;#链表栈队列的进阶&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;链表的进阶&lt;a href=&quot;#链表的进阶&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;定义以下三个方法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;removeNodes&lt;/li&gt;
&lt;li&gt;removeDuplicates&lt;/li&gt;
&lt;li&gt;reverseList&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其中&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;public int removeNodes(double x)
&lt;ul&gt;
&lt;li&gt;Removes &lt;strong&gt;all the elements&lt;/strong&gt; from a linked list that have value &lt;strong&gt;x&lt;/strong&gt;. (从链表中删除&lt;strong&gt;所有&lt;/strong&gt;值为 &lt;strong&gt;x&lt;/strong&gt; 的&lt;strong&gt;元素&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Returns the number of occurrences of &lt;strong&gt;x&lt;/strong&gt;. (返回 &lt;strong&gt;x&lt;/strong&gt; 出现的次数)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;public void removeDuplicates()
&lt;ul&gt;
&lt;li&gt;Remove duplicates from &lt;strong&gt;sorted&lt;/strong&gt; list (you may assume that the node values in the list are in &lt;strong&gt;non-decremental order&lt;/strong&gt;). (从&lt;strong&gt;排序&lt;/strong&gt;链表中删除重复元素（你可以假设链表中的节点值是&lt;strong&gt;非递减顺序的&lt;/strong&gt;）)&lt;/li&gt;
&lt;li&gt;Removes all nodes that have duplicate values, leaving only nodes with &lt;strong&gt;distinct values&lt;/strong&gt;. (删除所有具有重复值的节点，只保留具有&lt;strong&gt;不同值&lt;/strong&gt;的节点)&lt;/li&gt;
&lt;li&gt;Your implementation should finish the removing with SINGLE traversal of the whole list, which means you cannot simply invoke the &lt;strong&gt;removeNodes&lt;/strong&gt; method for removing the duplicates. (你的实现应该在对整个列表进行单次遍历的情况下完成删除，这意味着你不能简单地调用 &lt;strong&gt;removeNodes&lt;/strong&gt; 方法来删除重复项)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;public void reverseList()
&lt;ul&gt;
&lt;li&gt;Reverse the linked list &lt;strong&gt;WITHOUT using extra space&lt;/strong&gt;. (反转链表&lt;strong&gt;不使用额外空间&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Hint: Reverse the linked list can be performed by modifying the “next” pointer of current node from the original next node to its previous node. (提示：反转链表可以通过将当前节点的“下一个”指针从原始下一个节点修改为其前一个节点来执行)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这是老师给的模板，在此基础上进行实现：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; List&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    private&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt; head&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; List&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;head &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; boolean&lt;/span&gt;&lt;span&gt; isEmpty&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;head &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt; insertNode&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; index&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; double&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;index &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        int&lt;/span&gt;&lt;span&gt; currIndex &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        Node&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        while&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;currNode &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt; index &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; currIndex&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            currIndex&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;index &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        Node&lt;/span&gt;&lt;span&gt; newNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;index &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            newNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setNext&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;head &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; newNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;span&gt; else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            newNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setNext&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setNext&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;newNode&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; newNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt; findNode&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;Node&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; head&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getData&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; ==&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                return&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt; removeNode&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;head &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        Node&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; head&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getData&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; ==&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;head &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; head&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            return&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        for&lt;/span&gt;&lt;span&gt; (;&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; !=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;().&lt;/span&gt;&lt;span&gt;getData&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; ==&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                Node&lt;/span&gt;&lt;span&gt; matchNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setNext&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;matchNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                return&lt;/span&gt;&lt;span&gt; matchNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; displayList&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        Node&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; head&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;currNode &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getData&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot; -&amp;gt; &quot;&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getData&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; removeDuplicates&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        /*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; reverseList&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        /*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; removeNodes&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        /*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; args&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        /*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	private&lt;/span&gt;&lt;span&gt; double&lt;/span&gt;&lt;span&gt; data&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	private&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt; next&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; data&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;data &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; data&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;next &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; double&lt;/span&gt;&lt;span&gt; getData&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		return&lt;/span&gt;&lt;span&gt; this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt; getNext&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		return&lt;/span&gt;&lt;span&gt; this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;next&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; setNext&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;Node&lt;/span&gt;&lt;span&gt; next&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;next &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; next&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;对于 &lt;strong&gt;removeNodes&lt;/strong&gt; 方法，我们可以遍历链表，检查每个节点的值是否等于 x，如果是，则将该节点从链表中删除，并计数器加一。最后返回计数器的值：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; removeNodes&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;head &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		Node&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; head&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getData&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; ==&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;head &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; head&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		for&lt;/span&gt;&lt;span&gt; (;&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; !=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;().&lt;/span&gt;&lt;span&gt;getData&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; ==&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				Node&lt;/span&gt;&lt;span&gt; matchNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setNext&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;matchNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				return&lt;/span&gt;&lt;span&gt; matchNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;对于 &lt;strong&gt;removeDuplicates&lt;/strong&gt; 方法，由于链表是排序的（这是此题关键），我们可以使用了一个哑节点（dummy node）来简化边界情况的处理。&lt;code&gt;pastNode&lt;/code&gt; 用于跟踪当前节点的前一个节点，&lt;code&gt;currNode&lt;/code&gt; 用于遍历链表。当发现重复节点时，&lt;code&gt;hasDuplicate&lt;/code&gt; 标志被设置为 true，直到遇到不同的值时，根据 &lt;code&gt;hasDuplicate&lt;/code&gt; 的状态决定是否删除重复节点。&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; removeDuplicates&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;head &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		}&lt;/span&gt;&lt;span&gt; // define head and second node is null&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		Node&lt;/span&gt;&lt;span&gt; dummy &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		dummy&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setNext&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		Node&lt;/span&gt;&lt;span&gt; pastNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; dummy&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		Node&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; head&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		boolean&lt;/span&gt;&lt;span&gt; hasDuplicate &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; false&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		while&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;currNode &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt;// condition: when head is not null return null&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			Node&lt;/span&gt;&lt;span&gt; nextNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;nextNode &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getData&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; ==&lt;/span&gt;&lt;span&gt; nextNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getData&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				hasDuplicate &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; true&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; nextNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			}&lt;/span&gt;&lt;span&gt; else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;hasDuplicate&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;					pastNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setNext&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;nextNode&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;					hasDuplicate &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; false&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				}&lt;/span&gt;&lt;span&gt; else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;					pastNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; nextNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		head &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; dummy&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;对于 &lt;strong&gt;reverseList&lt;/strong&gt; 方法，我们可以使用三个指针来反转链表：&lt;code&gt;pastNode&lt;/code&gt; 指向前一个节点，&lt;code&gt;currNode&lt;/code&gt; 指向当前节点，&lt;code&gt;nextNode&lt;/code&gt; 指向下一个节点。在遍历链表时，我们将当前节点的 &lt;code&gt;next&lt;/code&gt; 指针指向前一个节点，然后更新指针以继续遍历。最后，将头节点更新为 &lt;code&gt;prevNode&lt;/code&gt;，即新的头节点。&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; reverseList&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        Node&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; head&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		Node&lt;/span&gt;&lt;span&gt; pastNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		while&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;currNode &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			Node&lt;/span&gt;&lt;span&gt; nextNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setNext&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;pastNode&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			pastNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; nextNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		head &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; pastNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;这个方法也许不好想，但理解了其原理后实现起来还是比较简单的。核心代码就只有三行。&lt;/p&gt;
&lt;p&gt;接着来看栈的进阶。&lt;/p&gt;
&lt;h3&gt;栈的进阶&lt;a href=&quot;#栈的进阶&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;只需要写一个 computePostfix 静态方法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;public static int computePostfix(String postfix)
&lt;ul&gt;
&lt;li&gt;postfix is a string representing a &lt;strong&gt;valid&lt;/strong&gt; postfix expression which contains only digits and ‘+’, ‘-’, ‘*’, ‘/’ operators, separated by ‘,’. (后缀表达式是一个字符串，表示一个&lt;strong&gt;有效&lt;/strong&gt;的后缀表达式，只包含数字和‘+’，‘-’，‘*’，‘/’运算符，以‘，’分隔)&lt;/li&gt;
&lt;li&gt;You can assume the length of postfix will not exceed 50. (你可以假设后缀表达式的长度不会超过 50)&lt;/li&gt;
&lt;li&gt;Returns &lt;strong&gt;the evaluation result&lt;/strong&gt;. (返回&lt;strong&gt;计算结果&lt;/strong&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Consider the postfix expression evaluation algorithm introduced in Lec3:
&lt;ul&gt;
&lt;li&gt;If the element is an operand, push it to stack. (如果元素是操作数，则将其压入栈中)&lt;/li&gt;
&lt;li&gt;If the element is an operator O, pop twice and get A and B respectively. Calculate BOA and push it back to stack. (如果元素是运算符 O，则弹出两次，分别获取 A 和 B。计算 BOA 并将其压回栈中)&lt;/li&gt;
&lt;li&gt;When the expression is ended, the value in the stack is the final answer. (当表达式结束时，栈中的值即为最终答案)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这个考验的是对栈的理解和应用能力。以及学习能力。老师给的模板如下：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; Stack&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	private&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	private&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; top&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; Stack&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; size&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;values &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;size&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		top &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; -&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; boolean&lt;/span&gt;&lt;span&gt; isEmpty&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		return&lt;/span&gt;&lt;span&gt; this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;top &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; boolean&lt;/span&gt;&lt;span&gt; isFull&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		return&lt;/span&gt;&lt;span&gt; this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;top &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;values&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt; top&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		if&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;top &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		return&lt;/span&gt;&lt;span&gt; this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;top&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt; push&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		if&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;isFull&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;top&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;valueOf&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		return&lt;/span&gt;&lt;span&gt; top&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt; push&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;Integer&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		if&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;isFull&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;top&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		return&lt;/span&gt;&lt;span&gt; top&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt; pop&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		if&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;top &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		return&lt;/span&gt;&lt;span&gt; this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;top &lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; displayStack&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;top --&amp;gt;&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		for&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;top&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;&amp;gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;\t&lt;/span&gt;&lt;span&gt;|&lt;/span&gt;&lt;span&gt;\t&lt;/span&gt;&lt;span&gt; &quot;&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;].&lt;/span&gt;&lt;span&gt;intValue&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; &quot;&lt;/span&gt;&lt;span&gt;\t&lt;/span&gt;&lt;span&gt;|&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;&lt;/span&gt;&lt;span&gt;\t&lt;/span&gt;&lt;span&gt;+---------------+&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; computePostfix&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt; postfix&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; args&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;首先得使用 split 函数按分隔符分割字符串&lt;/p&gt;
&lt;p&gt;参考这个链接：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.csdn.net/weixin_43827585/article/details/121224486&quot;&gt;Java String split()&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;把这个学会，剩下的就是 switch 函数来判断是数字还是符号，然后进行相应的操作即可（注意题目要求的操作顺序）：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; computePostfix&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt; postfix&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		Stack&lt;/span&gt;&lt;span&gt; stack &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Stack&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;50&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		String&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; result &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; postfix&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;split&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;,&quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		for&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; count &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; count &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; result&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; count&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			int&lt;/span&gt;&lt;span&gt; answer &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;result&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;count&lt;/span&gt;&lt;span&gt;].&lt;/span&gt;&lt;span&gt;equals&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;+&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; ||&lt;/span&gt;&lt;span&gt; result&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;count&lt;/span&gt;&lt;span&gt;].&lt;/span&gt;&lt;span&gt;equals&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;-&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; ||&lt;/span&gt;&lt;span&gt; result&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;count&lt;/span&gt;&lt;span&gt;].&lt;/span&gt;&lt;span&gt;equals&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;*&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;					||&lt;/span&gt;&lt;span&gt; result&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;count&lt;/span&gt;&lt;span&gt;].&lt;/span&gt;&lt;span&gt;equals&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;/&quot;&lt;/span&gt;&lt;span&gt;))&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				int&lt;/span&gt;&lt;span&gt; right &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; stack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;pop&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				int&lt;/span&gt;&lt;span&gt; left &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; stack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;pop&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				switch&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;result&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;count&lt;/span&gt;&lt;span&gt;])&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;					case&lt;/span&gt;&lt;span&gt; &quot;+&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;						answer &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; left &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; right&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;						break&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;					case&lt;/span&gt;&lt;span&gt; &quot;-&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;						answer &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; left &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; right&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;						break&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;					case&lt;/span&gt;&lt;span&gt; &quot;*&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;						answer &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; left &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; right&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;						break&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;					case&lt;/span&gt;&lt;span&gt; &quot;/&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;						answer &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; left &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt; right&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;						break&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				stack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;answer&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			}&lt;/span&gt;&lt;span&gt; else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				stack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;push&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;result&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;count&lt;/span&gt;&lt;span&gt;]);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		return&lt;/span&gt;&lt;span&gt; stack&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;pop&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;这道题算是三道题里面最简单的了，最后就是队列了。&lt;/p&gt;
&lt;h3&gt;队列的进阶&lt;a href=&quot;#队列的进阶&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;之前介绍了循环队列的实现方法，这里则需要实现一个双端队列（Deque，Double-Ended Queue），需要允许在队列的两端进行插入和删除操作。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://raw.githubusercontent.com/Weisifengbuxi/tuchuang/main/img/fengmian6.6.webp&quot; alt=&quot;fengmian6.6.webp&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;fengmian6.6.webp&lt;/figcaption&gt;&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;CircularDeque(int size) Initializes the deque with a maximum size of size. (使用最大大小为 size 初始化双端队列)&lt;/li&gt;
&lt;li&gt;Integer insertFront() Adds an item at the front of Deque. Returns this item if the operation is successful, or Null otherwise. (在队列前端插入一个元素。如果操作成功，返回该元素，否则返回 Null。)&lt;/li&gt;
&lt;li&gt;Integer insertLast() Adds an item at the rear of Deque. Returns this item if the operation is successful, or Null otherwise. (在队列后端插入一个元素。如果操作成功，返回该元素，否则返回 Null。)&lt;/li&gt;
&lt;li&gt;Integer deleteFront() Deletes an item from the front of Deque. Returns this item if the operation is successful, or Null otherwise. (从队列前端删除一个元素。如果操作成功，返回该元素，否则返回 Null。)&lt;/li&gt;
&lt;li&gt;Integer deleteLast() Deletes an item from the rear of Deque. Returns this item if the operation is successful, or Null otherwise. (从队列后端删除一个元素。如果操作成功，返回该元素，否则返回 Null。)&lt;/li&gt;
&lt;li&gt;boolean isEmpty() Returns true if the deque is empty, or false otherwise. (如果双端队列为空，返回 true，否则返回 false。)&lt;/li&gt;
&lt;li&gt;boolean isFull() Returns true if the deque is full, or false otherwise. (如果双端队列已满，返回 true，否则返回 false。)&lt;/li&gt;
&lt;li&gt;Void displayCircularDeque(). (显示双端队列中的所有元素)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;老师给的模板如下：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; CircularDeque&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	private&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	private&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; front&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; rear&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; counter&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; CircularDeque&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; size&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; boolean&lt;/span&gt;&lt;span&gt; isEmpty&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; boolean&lt;/span&gt;&lt;span&gt; isFull&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt; insertFront&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt; deleteFront&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt; insertLast&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt; deleteLast&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; displayCircularDeque&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; args&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;与之前实现的循环队列类似，我们需要维护一个数组 &lt;code&gt;values&lt;/code&gt; 来存储双端队列的元素，两个指针 &lt;code&gt;front&lt;/code&gt; 和 &lt;code&gt;rear&lt;/code&gt; 分别指向队列的前端和后端，以及一个计数器 &lt;code&gt;counter&lt;/code&gt; 来记录当前队列的大小。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; CircularDeque&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; size&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		values &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;size&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		front &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		counter &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		rear &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; -&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;对于 &lt;strong&gt;isEmpty&lt;/strong&gt; 和 &lt;strong&gt;isFull&lt;/strong&gt; 方法，与之前的实现类似：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; boolean&lt;/span&gt;&lt;span&gt; isEmpty&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; counter &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; boolean&lt;/span&gt;&lt;span&gt; isFull&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        return&lt;/span&gt;&lt;span&gt; counter &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;对于 &lt;strong&gt;insertFront&lt;/strong&gt; 方法，我们需要在队列前端插入一个元素，如果队列已满则返回 null，否则将元素放入数组并更新 &lt;code&gt;front&lt;/code&gt; 和 &lt;code&gt;counter&lt;/code&gt;：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt; insertFront&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;isFull&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;span&gt; else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            int&lt;/span&gt;&lt;span&gt; temp &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;rear&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            front &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;front &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; %&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; //这一步和上文稍有出入&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;front&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            counter&lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            return&lt;/span&gt;&lt;span&gt; temp&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;解释代码：temp 用于存储当前队列后端的元素值，然后将 &lt;code&gt;front&lt;/code&gt; 指针向前移动一个位置，并将新元素插入到 &lt;code&gt;front&lt;/code&gt; 指向的位置。最后返回原后端元素的值。&lt;/p&gt;
&lt;p&gt;对于 &lt;strong&gt;deleteFront&lt;/strong&gt; 方法，我们需要从队列前端删除一个元素，如果队列为空则返回 null，否则将元素从数组中删除并更新 &lt;code&gt;front&lt;/code&gt; 和 &lt;code&gt;counter&lt;/code&gt;：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt; deleteFront&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;isEmpty&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		}&lt;/span&gt;&lt;span&gt; else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			int&lt;/span&gt;&lt;span&gt; temp &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;rear&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			front &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;front &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; %&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			counter&lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; temp&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;与此类似，&lt;strong&gt;insertLast&lt;/strong&gt; 和 &lt;strong&gt;deleteLast&lt;/strong&gt; 方法分别在队列后端进行插入和删除操作：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt; insertLast&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;isFull&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;span&gt; else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            rear &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;rear &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; %&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;rear&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            counter&lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            return&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;    public&lt;/span&gt;&lt;span&gt; Integer&lt;/span&gt;&lt;span&gt; deleteLast&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;isEmpty&lt;/span&gt;&lt;span&gt;())&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;span&gt; else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            int&lt;/span&gt;&lt;span&gt; temp &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span&gt;rear&lt;/span&gt;&lt;span&gt;];&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            rear &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;rear &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; %&lt;/span&gt;&lt;span&gt; values&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;length&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            counter&lt;/span&gt;&lt;span&gt;--&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            return&lt;/span&gt;&lt;span&gt; temp&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;至此，双端队列的基本操作已经实现。至于 &lt;strong&gt;displayCircularDeque&lt;/strong&gt; 方法，则可以参考或直接使用上文给的例子即可。&lt;/p&gt;
&lt;p&gt;那么本文就介绍到这里，链表、栈、队列是数据结构中非常基础且重要的部分，掌握它们的实现方法和应用场景对于编程能力的提升非常有帮助。希望本文能对您有所帮助，祝您学习愉快！&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;这是我目前写过最长的一篇文章了，虽然不会有很多人看 QAQ，也算是我对所学知识的一次复习吧，本文所有题目全部是英文，为了严谨我照搬一遍，并加上我的翻译，如果有错误欢迎指正，我收到后会及时更正~&lt;/p&gt;
&lt;/div&gt;</content:encoded><category>category:学习笔记</category><category>category:代码学习</category><category>tag:JAVA</category><category>tag:链表</category><category>tag:栈</category><category>tag:队列</category></item><item><title>【学习笔记】计算机组成原理前三讲核心知识点</title><link>https://www.weisifengbuxi.top/post/627a00f2</link><guid isPermaLink="false">627a00f2</guid><description>计算机组成原理（Computer Organisation） 是计算机科学与技术专业的核心课程之一，它不仅仅是为了让学生了解计算机硬件的工作原理，更是为了培养学生的系统思维和解决问题的能力。通过学习这门课，可以了解现代计算机是如何工作的。 这门课要求我们系所有人到大礼堂共同听课，Lab课则由四位TA</description><pubDate>Wed, 01 Oct 2025 16:42:12 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;计算机组成原理（Computer Organisation）&lt;/strong&gt; 是计算机科学与技术专业的核心课程之一，它不仅仅是为了让学生了解计算机硬件的工作原理，更是为了培养学生的系统思维和解决问题的能力。通过学习这门课，可以了解现代计算机是如何工作的。&lt;/p&gt;
&lt;p&gt;这门课要求我们系所有人到大礼堂共同听课，Lab 课则由四位 TA 老师负责，老师们讲的很快，因此想学好这门课不光要按时上课，课下也要整理总结。&lt;/p&gt;
&lt;h2&gt;Lecture 1 什么是计算机&lt;a href=&quot;#lecture-1-什么是计算机&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;计算机定义&lt;a href=&quot;#计算机定义&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;一台现代计算机是一种&lt;strong&gt;电子的&lt;/strong&gt;、&lt;strong&gt;数字的&lt;/strong&gt;、&lt;strong&gt;通用的&lt;/strong&gt;计算设备，它自动遵循&lt;strong&gt;一系列逐步&lt;/strong&gt;的指令来解决问题。&lt;/p&gt;
&lt;p&gt;计算机所遵循的这一系列逐步的&lt;strong&gt;指令&lt;/strong&gt;也被称为&lt;strong&gt;计算机程序&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;图灵机&lt;a href=&quot;#图灵机&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;图灵机（Turing Machine）&lt;/strong&gt; 是由英国数学家艾伦·图灵开发的一种假设装置，它是所有计算机的抽象模型。
一个图灵机由&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个分成单元格的磁带&lt;/li&gt;
&lt;li&gt;一个移动的读写头&lt;/li&gt;
&lt;li&gt;一个存储图灵机状态的寄存器&lt;/li&gt;
&lt;li&gt;一个有限的指令表&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;http://www.aturingmachine.com&quot;&gt;详细介绍&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://math.hws.edu/eck/js/turing-machine/TM.html&quot;&gt;Turing Machine Simulator（图灵机模拟器）&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;通用图灵机&lt;a href=&quot;#通用图灵机&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;通用图灵机（Universal Turing Machine）&lt;/strong&gt;，能够&lt;strong&gt;模拟&lt;/strong&gt;其他所有的图灵机。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;输入：数据 + 计算描述（图灵机）&lt;/li&gt;
&lt;li&gt;它是&lt;strong&gt;可编程的&lt;/strong&gt;，因此它是一台计算机，指令是输入数据的一部分&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;计算机就是一台通用图灵机&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;冯·诺依曼体系结构&lt;a href=&quot;#冯诺依曼体系结构&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;冯·诺依曼体系结构（Von Neumann Architecture）&lt;/strong&gt;，也称为&lt;strong&gt;存储程序架构&lt;/strong&gt;，&lt;strong&gt;数据&lt;/strong&gt;和&lt;strong&gt;程序&lt;/strong&gt;都存储在内存中&lt;/p&gt;
&lt;p&gt;存储程序架构&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个中央处理器（CPU）
&lt;ul&gt;
&lt;li&gt;控制单元&lt;/li&gt;
&lt;li&gt;算术逻辑单元（ALU）&lt;/li&gt;
&lt;li&gt;寄存器&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;主存&lt;/li&gt;
&lt;li&gt;I/O 系统&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;主存储器和 CPU 之间的一条单一路径，称为冯·诺依曼瓶颈。
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/wenzhang5.2.jpeg&quot; alt=&quot;wenzhang5.2.jpeg&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;wenzhang5.2.jpeg&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
冯·诺依曼体系结构
&lt;/div&gt;
&lt;h3&gt;冯·诺依曼执行周期&lt;a href=&quot;#冯诺依曼执行周期&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;冯·诺依曼执行周期（Von Neumann Execution Cycle）&lt;/strong&gt; 也称为获取-解码-执行周期，分成四步&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;控制单元从内存中获取下一条指令&lt;/li&gt;
&lt;li&gt;指令被解码成 ALU 能够理解的语言&lt;/li&gt;
&lt;li&gt;数据操作数从内存中获取到 CPU 内部的寄存器中&lt;/li&gt;
&lt;li&gt;ALU 执行指令并将结果放入寄存器或内存中&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&quot;https://vnmsim.c2r0b.ovh/en-us&quot;&gt;Von Neumann Machine Simulator（冯·诺依曼机器模拟机）&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;冯·诺依曼瓶颈&lt;a href=&quot;#冯诺依曼瓶颈&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;冯·诺依曼瓶颈（The Von Neumann Bottleneck）&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU 和内存是分开的&lt;/li&gt;
&lt;li&gt;所有数据和代码都在内存中&lt;/li&gt;
&lt;li&gt;CPU 通常比内存快&lt;/li&gt;
&lt;li&gt;CPU 被迫等待需要的数据被传输到或从内存中&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;抽象&lt;a href=&quot;#抽象&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;抽象（abstraction）&lt;/strong&gt; 是通过识别一组个体中的共同特征，或忽略这些个体的时空方面来形成概念的过程，抽象的本质是在特定情境中保留相关信息，并忘记在该情境中无关紧要的信息。&lt;/p&gt;
&lt;p&gt;从抽象到具体&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;一份出版物
2. 一份报纸
3. 《旧金山纪事报》
4. 《纪事报》5 月 18 日那一期
5. 我那本《纪事报》5 月 18 日那一期&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;现代现代计算系统的抽象层次&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用户级别：应用程序如 qq.exe&lt;/li&gt;
&lt;li&gt;高级语言：C、Java、C++&lt;/li&gt;
&lt;li&gt;汇编语言&lt;/li&gt;
&lt;li&gt;操作系统&lt;/li&gt;
&lt;li&gt;机器语言：指令集 A&lt;/li&gt;
&lt;li&gt;控制级别：微码或硬接线&lt;/li&gt;
&lt;li&gt;数字逻辑：电路、门&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;硬件与软件&lt;a href=&quot;#硬件与软件&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;硬件能做的，软件也能做，反之亦然。硬件实现更快但固定，软件实现更灵活但更慢。&lt;/p&gt;
&lt;h2&gt;Lecture 2 比特：数据表示与操作&lt;a href=&quot;#lecture-2-比特数据表示与操作&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;计算机是处理数字的机器，输入数字，对数字进行操作，输出也是数字。&lt;/p&gt;
&lt;h3&gt;二进制数：比特&lt;a href=&quot;#二进制数比特&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;计算机是二进制机器：只有 0 和 1。&lt;strong&gt;BIT&lt;/strong&gt; = &lt;strong&gt;B&lt;/strong&gt;inary dig&lt;strong&gt;IT&lt;/strong&gt;s; 1 bit: 0 or 1（比特 = 二进制数字；1 比特：0 或 1），1 字节 = 8 比特（1 Byte = 8 bits），一个&lt;strong&gt;字（word）&lt;/strong&gt; 是作为单元处理的固定大小数据块&lt;/p&gt;
&lt;h3&gt;数值数据表示&lt;a href=&quot;#数值数据表示&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Unsigned integers（无符号整数）&lt;/li&gt;
&lt;li&gt;Signed integers（有符号整数）
&lt;ul&gt;
&lt;li&gt;Sign-magnitude（原码）&lt;/li&gt;
&lt;li&gt;1’s complement（反码）&lt;/li&gt;
&lt;li&gt;2’s complement（补码）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Real number representation（实数表示）&lt;/li&gt;
&lt;li&gt;Floating-point numbers（浮点数）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;无符号整数表示&lt;a href=&quot;#无符号整数表示&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;无符号整数表示（Unsigned Integer Representation） 是计算机中以二进制形式表示非负整数的方法，其所有二进制位均为数值位，无符号位，取值范围为 0 到 &lt;span&gt;&lt;span&gt;2n−12^n-1&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;n&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;−&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;（n 为位数）&lt;/p&gt;
&lt;h3&gt;有符号整数表示&lt;a href=&quot;#有符号整数表示&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;有符号整数表示（Signed Integer Representation）最左侧的比特位（最高有效位）用作符号位。按照惯例，符号位为 0 表示正数，为 1 则表示负数。&lt;strong&gt;原码&lt;/strong&gt;：其余比特位表示数值大小不足七位要补足七位；&lt;strong&gt;反码&lt;/strong&gt;：在原码基础上，正数不变，负数符号位不变，其数值位的的相反 1 变为 0，0 变为 1；&lt;strong&gt;补码&lt;/strong&gt;：需先通过按位取反运算（即反码）将所有位反转或“翻转”；然后在结果值上加 1，并忽略对 0 取补码时产生的溢出。&lt;/p&gt;
&lt;p&gt;取一个正数，其原码，反码，补码完全相同。例如 25，二进制为：11001；原码：00011001（符号位 0 + 数值位 0011001）；反码：00011001；补码：00011001。&lt;/p&gt;
&lt;p&gt;例如-25，其原码：10011001；反码：11100110（符号位 1 + 取反后的数值位 1100110）；补码：11100110+1=11100111。&lt;/p&gt;























&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;数值&lt;/th&gt;&lt;th&gt;原码&lt;/th&gt;&lt;th&gt;反码&lt;/th&gt;&lt;th&gt;补码&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;25&lt;/td&gt;&lt;td&gt;00011001&lt;/td&gt;&lt;td&gt;00011001&lt;/td&gt;&lt;td&gt;00011001&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;-25&lt;/td&gt;&lt;td&gt;10011001&lt;/td&gt;&lt;td&gt;11100110&lt;/td&gt;&lt;td&gt;11100111&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;数字转换&lt;a href=&quot;#数字转换&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;主要对数字进行 2 进制和 16 进制转换，因较为基础，这里不多赘述。&lt;/p&gt;
&lt;h3&gt;实数表示&lt;a href=&quot;#实数表示&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;正二进制小数（Positive binary fractions (fixed point)）这里以三个例子来进行解释，如下：&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
问题一
问题二
问题三
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;(6.625)10=(?)2(6.625)_{10} = ( ? )_2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;6.625&lt;/span&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
$(0.1001001)_2 = (?)_{10}$
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
将0.9近似表示为二进制小数（使用8位数）
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;对这三个问题进行解答（点击按钮显示对应答案）&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
问题一
问题二
问题三
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;首先看整数位，对其进行 2 进制转换。本题整数位为 6，&lt;span&gt;&lt;span&gt;(6)10=(110)2(6)_{10}=(110)_2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;6&lt;/span&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;110&lt;/span&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;，接着看小数部分，本题为 0.625。采取&lt;strong&gt;乘 2 取整法&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;0.625×2=1.250.625 \times 2 = 1.25&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.625&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1.25&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;，取整数部分 1 ,剩余小数部分 0.25&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;0.25×2=0.50.25 \times 2 = 0.5&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.25&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;，取整数部分 0（剩余小数部分&lt;span&gt;&lt;span&gt;0.50.5&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;）&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;0.5×2=1.00.5 \times 2 = 1.0&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.5&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1.0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;，取整数部分 1 将整数部分从上往下排列，小数部分的二进制为：101。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此&lt;/p&gt;
&lt;div&gt;
$(6.625)_{10} = (110.101)_2$
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;对于&lt;span&gt;&lt;span&gt;(0.1001001)2(0.1001001)_2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;0.1001001&lt;/span&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小数点后第 1 位：&lt;span&gt;&lt;span&gt;1×2−1=0.51 \times 2^{-1} = 0.5&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;−&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;第 4 位：&lt;span&gt;&lt;span&gt;1×2−4=0.06251 \times 2^{-4} = 0.0625&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;−&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.0625&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;第 7 位：&lt;span&gt;&lt;span&gt;1×2−7=0.00781251 \times 2^{-7} = 0.0078125&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;−&lt;/span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.0078125&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其余位为 0，求和：&lt;/p&gt;
&lt;div&gt;
0.5+0.0625+0.0078125=0.5703125
&lt;/div&gt;
&lt;p&gt;因此，&lt;/p&gt;
&lt;div&gt;
$(0.1001001)_2 = (0.5703125)_{10}$
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;步骤如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;0.9×2=1.80.9 \times 2 = 1.8&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.9&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1.8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; → 取整 1（第 1 位，记为&lt;span&gt;&lt;span&gt;b1=1b_1=1&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;），剩余小数&lt;span&gt;&lt;span&gt;0.80.8&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;0.8×2=1.60.8 \times 2 = 1.6&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.8&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1.6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; → 取整 1（第 2 位，&lt;span&gt;&lt;span&gt;b2=1b_2=1&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;），剩余小数&lt;span&gt;&lt;span&gt;0.60.6&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;0.6×2=1.20.6 \times 2 = 1.2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.6&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1.2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; → 取整 1（第 3 位，&lt;span&gt;&lt;span&gt;b3=1b_3=1&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;），剩余小数&lt;span&gt;&lt;span&gt;0.20.2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;0.2×2=0.40.2 \times 2 = 0.4&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.2&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; → 取整 0（第 4 位，&lt;span&gt;&lt;span&gt;b4=0b_4=0&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;），剩余小数&lt;span&gt;&lt;span&gt;0.40.4&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;0.4×2=0.80.4 \times 2 = 0.8&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.4&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; → 取整 0（第 5 位，&lt;span&gt;&lt;span&gt;b5=0b_5=0&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;5&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;），剩余小数&lt;span&gt;&lt;span&gt;0.80.8&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;（开始循环）&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;0.8×2=1.60.8 \times 2 = 1.6&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.8&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1.6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; → 取整 1（第 6 位，&lt;span&gt;&lt;span&gt;b6=1b_6=1&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;），剩余小数&lt;span&gt;&lt;span&gt;0.60.6&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.6&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;0.6×2=1.20.6 \times 2 = 1.2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.6&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1.2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; → 取整 1（第 7 位，&lt;span&gt;&lt;span&gt;b7=1b_7=1&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;7&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;），剩余小数&lt;span&gt;&lt;span&gt;0.20.2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;0.2×2=0.40.2 \times 2 = 0.4&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.2&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.4&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; → 取整 0（第 8 位，&lt;span&gt;&lt;span&gt;b8=0b_8=0&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;b&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;8&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;凑齐 8 位后，二进制小数为&lt;span&gt;&lt;span&gt;0.1110011020.11100110_2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.1110011&lt;/span&gt;&lt;span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;。&lt;/p&gt;
&lt;p&gt;因此，&lt;/p&gt;
&lt;div&gt;
$0.9_{10}$的 8 位二进制近似为$0.11100110_2$
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;浮点数&lt;a href=&quot;#浮点数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;浮点（Floating point）&lt;/strong&gt; 指数字的基数点可以&quot;浮动&quot;，即它可以相对于数字的有效数字放置在任何位置。&lt;/p&gt;
&lt;h3&gt;半/单精度浮点数&lt;a href=&quot;#半单精度浮点数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;半精度浮点数是一种使用 16 位（2 字节）存储的浮点数格式，主要用于对存储和计算效率要求较高的场景，如深度学习和图形处理。&lt;/p&gt;
&lt;p&gt;组成：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;符号位：1 位，表示数值的正负&lt;/li&gt;
&lt;li&gt;指数部分：5 位，采用偏移表示法，用于表示数值的大小&lt;/li&gt;
&lt;li&gt;尾数部分：10 位，表示有效数字，包含一个隐含的 1（对于规范化数）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;与半精度浮点数类似，单精度浮点数为 32 位，1 位作为符号位，8 位作为指数部分；23 位表示尾数部分&lt;/p&gt;
&lt;p&gt;以下是几道题目&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
问题一
问题二
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;0.011110000000000=(?)100.011110000000000 = ( ? )_{10}&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;0.011110000000000&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;12.735=(?)212.735 = (?)_{2}&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;12.735&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;解答如下（点击按钮显示对应答案）&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
问题一
问题二
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;&lt;strong&gt;符号位&lt;/strong&gt;：0。
&lt;strong&gt;指数位&lt;/strong&gt;：接下来的 5 位是 01111 吗，将其转为十进制位 15，半精度的指数偏移量为 15（&lt;span&gt;&lt;span&gt;25−1−12^{5-1}-1&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;5&lt;/span&gt;&lt;span&gt;−&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;−&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;）实际指数=15-15=0。
&lt;strong&gt;尾数为&lt;/strong&gt;：0000000000.半精度尾数采用隐含 “1” 的规格化形式，即尾数为 1.M（M 是尾数位），这里 M 全为 0，所以尾数是 1.0。&lt;/p&gt;
&lt;p&gt;代入半精度公式计算&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;(−1)(符号位)×(1.M)×2E(-1) ^ (符号位) \times (1.M) \times 2^E&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;−&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;符号位&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1.&lt;/span&gt;&lt;span&gt;M&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;E&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
带入具体数值得到
&lt;div&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;(−1)0×1.0×20=1×1×1=1(-1)^0 \times 1.0 \times 2^0=1 \times 1 \times 1=1&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;−&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1.0&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;×&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;&lt;strong&gt;符号位&lt;/strong&gt;：12.375 是正数，符号位为 0。
&lt;strong&gt;指数位&lt;/strong&gt;：单精度的&lt;strong&gt;指数偏移量&lt;/strong&gt;为 127（因为 8 位指数的偏移量公式：&lt;span&gt;&lt;span&gt;28−1−1=1272^{8-1} - 1 = 127&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;8&lt;/span&gt;&lt;span&gt;−&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;−&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;127&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;）。实际指数是 3，因此&lt;strong&gt;指数字段的值&lt;/strong&gt;= 实际指数 + 偏移量 =3 + 127 = 130。130 转成 8 位二进制：130 = 128 + 2 → 10000010。
&lt;strong&gt;尾数位&lt;/strong&gt;：规格化尾数是 1.100011，去掉隐含的 “1”，剩下小数部分 100011。尾数位需要补够 23 位，因此在 100011 后补 17 个 0，得到 10001100000000000000000。&lt;/p&gt;
&lt;p&gt;将这三部分组合：&lt;/p&gt;
&lt;div&gt;
01000001010001100000000000000000
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;非数值数据表示&lt;a href=&quot;#非数值数据表示&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这一部分内容不是很重要，因此放一张 ASCII 码，可自行对照&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/ASCII.png&quot; alt=&quot;ASCII.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;ASCII.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div&gt;
ASCII码对照表
&lt;/div&gt;
&lt;h2&gt;Lecture 3 布尔代数：从比特到逻辑&lt;a href=&quot;#lecture-3-布尔代数从比特到逻辑&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;计算机通过比特（二进制位）表示信息。一个比特具有两种可能的值，即&lt;strong&gt;0&lt;/strong&gt;和&lt;strong&gt;1&lt;/strong&gt;。比特可用于表示真值——&lt;strong&gt;真&lt;/strong&gt;与&lt;strong&gt;假&lt;/strong&gt;。因此比特运算对应着&lt;strong&gt;布尔代数&lt;/strong&gt;中的逻辑运算。&lt;/p&gt;
&lt;h3&gt;布尔变量与运算符&lt;a href=&quot;#布尔变量与运算符&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;布尔变量是只能取两个值的变量：&lt;strong&gt;真&lt;/strong&gt;/&lt;strong&gt;假&lt;/strong&gt;；或&lt;strong&gt;1&lt;/strong&gt;/&lt;strong&gt;0&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;布尔运算符&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AND&lt;/strong&gt;（A AND B , AB , &lt;span&gt;&lt;span&gt;A∧BA \wedge B&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;A&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;∧&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OR&lt;/strong&gt; (A OR B , A+B , &lt;span&gt;&lt;span&gt;A∨BA \vee B&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;A&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;∨&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;B&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NOT&lt;/strong&gt; （ NOT A , A’ , &lt;span&gt;&lt;span&gt;¬A\neg A&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;¬&lt;/span&gt;&lt;span&gt;A&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;布尔函数&lt;a href=&quot;#布尔函数&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;函数&lt;/strong&gt;是一种关系，能够唯一地将一个集合的成员与另一个集合的成员相关联。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;布尔函数&lt;/strong&gt;具有&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;至少一个布尔变量&lt;/li&gt;
&lt;li&gt;至少一个布尔运算符&lt;/li&gt;
&lt;li&gt;至少一个来自集合{0,1}的输入&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;其产生的输出也在集合{0,1}之中&lt;/p&gt;
&lt;h4&gt;布尔运算符优先级&lt;a href=&quot;#布尔运算符优先级&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;一个布尔函数中可能包含多个布尔运算符。运算优先级规则为：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NOT&lt;/strong&gt;优先级最高&lt;/li&gt;
&lt;li&gt;其次是&lt;strong&gt;AND&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;最后是&lt;strong&gt;OR&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;布尔运算符的真值表&lt;a href=&quot;#布尔运算符的真值表&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
AND
OR
NOT
&lt;/div&gt;
&lt;div&gt;

  &lt;table&gt;&lt;tbody&gt;&lt;tr&gt;
    &lt;th&gt;AND&lt;/th&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;A&lt;/th&gt;
    &lt;th&gt;B&lt;/th&gt;
    &lt;th&gt;AB&lt;/th&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;0&lt;/td&gt;
    &lt;td&gt;0&lt;/td&gt;
    &lt;td&gt;0&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;0&lt;/td&gt;
    &lt;td&gt;1&lt;/td&gt;
    &lt;td&gt;0&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;1&lt;/td&gt;
    &lt;td&gt;0&lt;/td&gt;
    &lt;td&gt;0&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;1&lt;/td&gt;
    &lt;td&gt;1&lt;/td&gt;
    &lt;td&gt;1&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;

  &lt;table&gt;&lt;tbody&gt;&lt;tr&gt;
    &lt;th&gt;OR&lt;/th&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;A&lt;/th&gt;
    &lt;th&gt;B&lt;/th&gt;
    &lt;th&gt;A+B&lt;/th&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;0&lt;/td&gt;
    &lt;td&gt;0&lt;/td&gt;
    &lt;td&gt;0&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;0&lt;/td&gt;
    &lt;td&gt;1&lt;/td&gt;
    &lt;td&gt;1&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;1&lt;/td&gt;
    &lt;td&gt;0&lt;/td&gt;
    &lt;td&gt;1&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;1&lt;/td&gt;
    &lt;td&gt;1&lt;/td&gt;
    &lt;td&gt;1&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;

  
  &lt;table&gt;&lt;tbody&gt;&lt;tr&gt;
    &lt;th&gt;NOT&lt;/th&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;th&gt;A&lt;/th&gt;
    &lt;th&gt;$ \overline{A}$&lt;/th&gt;&lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;0&lt;/td&gt;
    &lt;td&gt;1&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td&gt;1&lt;/td&gt;
    &lt;td&gt;0&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;布尔恒等式&lt;a href=&quot;#布尔恒等式&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;布尔恒等式(Boolean Identities)，也可以称为布尔代数常用基本法则。由于打成表格太麻烦了，找了张图片
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/BooleanRules.png&quot; alt=&quot;BooleanRules.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;BooleanRules.png&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;上述所有恒等式都可以通过&lt;strong&gt;真值表&lt;/strong&gt;来证明。为此，你需要使用真值表展示等式两边的所有可能取值。&lt;strong&gt;若两者完全一致，则该恒等式成立&lt;/strong&gt;。&lt;/p&gt;
&lt;h3&gt;规范形式&lt;a href=&quot;#规范形式&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;表示同一布尔表达式有多种方式。&lt;strong&gt;逻辑等价的表达式&lt;/strong&gt;具有相同的真值表。例如，&lt;span&gt;&lt;span&gt;(X+Y)′=X′Y′(X+Y)^{&apos;} = X^{&apos;}Y^{&apos;}&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;X&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;Y&lt;/span&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;′&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;X&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;′&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;Y&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;′&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;。为避免混淆，设计者采用标准化或规范形式来表达布尔函数。主要有两种&lt;strong&gt;规范形式&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;积之和(Sum-of-products)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;和之积(Product-of-sums)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;积之和&lt;a href=&quot;#积之和&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;来自输入的不同 “乘积” 项被 “相加” 在一起。这也被称为&lt;strong&gt;析取范式&lt;/strong&gt;（Disjunctive Normal Form）。&lt;/p&gt;
&lt;h4&gt;和之积&lt;a href=&quot;#和之积&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;来自输入的不同 “和项” 被 “相乘” 在一起。这也被称为&lt;strong&gt;合取范式&lt;/strong&gt;（Conjunctive Normal Form）。&lt;/p&gt;
&lt;h3&gt;卡诺图&lt;a href=&quot;#卡诺图&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;卡诺图（KM 或 K-map）是由莫里斯·卡诺（Maurice Karnaugh，1924 年~）于 1953 年提出的一种简化布尔代数表达式的方法。&lt;/p&gt;
&lt;div&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/K-map1.png&quot; alt=&quot;K-map1.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;K-map1.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/K-map2.png&quot; alt=&quot;K-map2.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;K-map2.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/K-map3.png&quot; alt=&quot;K-map3.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;K-map3.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/K-map4.png&quot; alt=&quot;K-map4.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;K-map4.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p&gt;前三节课的知识就结束了，之后是门电路，只学了一部分就国庆放假了（老师看我们听不下去就提前下课了）。门电路部分我尽量在 quiz 之前整理出来。&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;花了三天时间终于写完了，由于课件全部是英文的，只能一点一点翻译出来 QAQ。有些地方翻译不当请见谅，本人实力实在有限。易造成歧义的关键词后已经加上了原单词，如果存在其他有错误的部分请在评论区指正，我收到后会及时更正~&lt;/p&gt;
&lt;/div&gt;</content:encoded><category>category:学习笔记</category><category>tag:笔记</category><category>tag:图灵机</category><category>tag:数据表示</category><category>tag:布尔逻辑</category></item><item><title>【学习笔记】递归与链表</title><link>https://www.weisifengbuxi.top/post/3be0a65</link><guid isPermaLink="false">3be0a65</guid><description>数据结构和算法分析（Data Structures and Algorithm Analysis） 的第一节课是回顾之前所学的 递归（Recursion） ，作为导入课的同时还可以简单复习一下 java（这门课所使用语言）。因此第一周的课程和 lab 不算难，以下是 Lab 的具体细节。 Lab 1</description><pubDate>Tue, 23 Sep 2025 16:14:41 GMT</pubDate><content:encoded>&lt;p&gt;&lt;strong&gt;数据结构和算法分析（Data Structures and Algorithm Analysis）&lt;/strong&gt; 的第一节课是回顾之前所学的&lt;strong&gt;递归（Recursion）&lt;/strong&gt;，作为导入课的同时还可以简单复习一下 java（这门课所使用语言）。因此第一周的课程和 lab 不算难，以下是 Lab 的具体细节。&lt;/p&gt;
&lt;h2&gt;Lab 1&lt;a href=&quot;#lab-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;题目 1&lt;a href=&quot;#题目-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Read in a positive number and compute its factorial using recursion.&lt;/li&gt;
&lt;li&gt;Note that your class should be named “T1”， and should contain
&lt;ul&gt;
&lt;li&gt;a main function, which does IO&lt;/li&gt;
&lt;li&gt;and a recursive function, public static int factR(int n), which computes the factorial&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;You may build you recursion as follows.
&lt;ul&gt;
&lt;li&gt;Step, if n&amp;gt;1: factR(n) = n * factR(n-1)&lt;/li&gt;
&lt;li&gt;Base, if n&amp;lt;=1: factR(1) = 1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;简单来说就是读入一个正整数并使用递归计算其阶乘，值得注意的是虽然题目说的是正整数，但如果输入负数和零也要进行处理。老师已经给了主要结构：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; java&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;util&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;Scanner&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; T1&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; factR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; args&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	    System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;factR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;span&gt; //n is the input from keyboard&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;即当给的数小于等于 1 时返回 1（0 的阶乘为 1），否则就按照阶乘的运算方式递归即可。如下:&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; java&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;util&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;Scanner&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; T1&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; factR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;n &lt;/span&gt;&lt;span&gt;&amp;lt;=&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		else&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; n &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; factR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; args&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		Scanner&lt;/span&gt;&lt;span&gt; scan &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Scanner&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		int&lt;/span&gt;&lt;span&gt; n &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; scan&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;nextInt&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;factR&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		scan&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;close&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;不是没有注释，而是因为我写的不严谨。索性全删了，以后不再赘述。&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;题目 2&lt;a href=&quot;#题目-2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Read in and compute the greatest common divisor (GCD) of two natural numbers using recursion.&lt;/li&gt;
&lt;li&gt;GCD(x, y) is the greatest natural number which divides both x and y
&lt;ul&gt;
&lt;li&gt;GCD(6, 5) = 1&lt;/li&gt;
&lt;li&gt;GCD(6, 9) = 3&lt;/li&gt;
&lt;li&gt;GCD(6, 0) = 6&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Note that your class should be named “T2” and should contain
&lt;ul&gt;
&lt;li&gt;a main function, which does IO&lt;/li&gt;
&lt;li&gt;and a recursive function, public static int GCD(int x, int y), which computes the GCD of x and y.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;老师给的模板：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; java&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;util&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;Scanner&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; T2&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; GCD&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; y&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; args&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	    System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;GCD&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; y&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;span&gt; // x, y are the inputs from keyboard&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;这个题目就很有意思了，计算两个自然数的最大公约数。通常最经典的方法便是欧几里得算法，其步骤为：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;用较大的数除以较小的数，取余数。&lt;/li&gt;
&lt;li&gt;用较小的数替代较大的数，用余数替代较小的数。&lt;/li&gt;
&lt;li&gt;重复上述步骤，直到余数为 0，此时较小的数即为最大公约数。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;正常输入的数一大一小，但大数在前面还是小的数在前面就是一个问题。这里引用朋友的方法，我觉得十分巧妙，无论大数在前面还是小的数在前面都能完美解决:&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; java&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;util&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;Scanner&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; T2&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; GCD&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; y&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;y &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; GCD&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;y&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; x &lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt; y&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		}&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; args&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		Scanner&lt;/span&gt;&lt;span&gt; scan1 &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Scanner&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		Scanner&lt;/span&gt;&lt;span&gt; scan2 &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Scanner&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		int&lt;/span&gt;&lt;span&gt; x &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; scan1&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;nextInt&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		int&lt;/span&gt;&lt;span&gt; y &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; scan2&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;nextInt&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;GCD&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; y&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		scan1&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;close&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		scan2&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;close&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;题目 3&lt;a href=&quot;#题目-3&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Output the reverse-order form of an integer. Recursion should be used, and your input should be a positive integer.&lt;/li&gt;
&lt;li&gt;For example:
&lt;ul&gt;
&lt;li&gt;Input: 2783; output: 3872&lt;/li&gt;
&lt;li&gt;Input: 598; output: 895&lt;/li&gt;
&lt;li&gt;Input: 3; output: 3&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Note that your class should be named “EX1” and should contain
&lt;ul&gt;
&lt;li&gt;a main function, which does IO&lt;/li&gt;
&lt;li&gt;and a recursive function, public static int reverseForm(int n).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;老师给的结构：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; java&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;util&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;Scanner&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; EX1&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; reverseForm&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; args&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;reverseForm&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;span&gt; //n is the input from keyboard&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;这道题就其实也不算难，要求输出一个整数的逆序形式。比如输入是 123456，那么要求输出就是 654321。其实我之前再 LeetCode 上见过，印象里学 C 的时候老师好像也提到过，不过好像每次都没做出来。。。属于是它认识我我不认识它了 QAQ。&lt;/p&gt;
&lt;p&gt;正常思路就是将这个数取 10 的余，得到的数即输出的最高位，将它每次递归都乘 10，以此类推。&lt;/p&gt;
&lt;p&gt;我自己写的话出现了很多问题，比如输入的数可能是不同位数，因此递归次数就成了一个比较难解决的问题。&lt;/p&gt;
&lt;p&gt;中间问同学的思路得知他们是先得到所给数的位数，即用数学方法中的 log10，取到位数后再进行递归。不过我觉得还是很麻烦，加上当时已经筋疲力尽了，通过 ai 果然得到了更好的方法：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; java&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;util&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;Scanner&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; EX1&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; int&lt;/span&gt;&lt;span&gt; reverseForm&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;n &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; 10&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; n&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		}&lt;/span&gt;&lt;span&gt; else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			int&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; n &lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt; 10&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			int&lt;/span&gt;&lt;span&gt; all &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; n &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt; 10&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			int&lt;/span&gt;&lt;span&gt; digits &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; Math&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;log10&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;all&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; Math&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;pow&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; digits&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; reverseForm&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;all&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; args&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		Scanner&lt;/span&gt;&lt;span&gt; scanner &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Scanner&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		int&lt;/span&gt;&lt;span&gt; n &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; scanner&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;nextInt&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;reverseForm&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		scanner&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;close&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;可以看到定义三个整数，i 作为新的最大位数，all 作为下次递归的数据，digits 为数据位数吗，最后返回对应位数的对应 10 次放即可。&lt;/p&gt;
&lt;h3&gt;题目 4&lt;a href=&quot;#题目-4&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Output the binary form of a decimal integer. Recursion should be used, and your input should be a String.&lt;/li&gt;
&lt;li&gt;For example:
&lt;ul&gt;
&lt;li&gt;Input: 27; output: 11011&lt;/li&gt;
&lt;li&gt;Input: 33; output: 100001&lt;/li&gt;
&lt;li&gt;Input: 3; output: 11&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Note that your class should be named “EX2” and should contain
&lt;ul&gt;
&lt;li&gt;a main function, which does IO&lt;/li&gt;
&lt;li&gt;and a recursive function, public static String binaryForm(int n).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;老师给的代码如下&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;/*Add some comments by yourself*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; java&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;util&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;Scanner&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; EX2&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; String&lt;/span&gt;&lt;span&gt; binaryForm&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; args&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	    /*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	    System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;binaryForm&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;span&gt; //n is the input from keyboard&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;也就是将一个十进制整数变成二进制形式。还是比较简单的：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;import&lt;/span&gt;&lt;span&gt; java&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;util&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;Scanner&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; EX2&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; String&lt;/span&gt;&lt;span&gt; binaryForm&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; n&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		String&lt;/span&gt;&lt;span&gt; a &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &quot;&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;n &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; &quot;0&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;n &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; &quot;1&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;n &lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt; ==&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt;// case 1&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			a &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &quot;0&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; binaryForm&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		}&lt;/span&gt;&lt;span&gt; else&lt;/span&gt;&lt;span&gt; if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;n &lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt; ==&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			a &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; &quot;1&quot;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; binaryForm&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		return&lt;/span&gt;&lt;span&gt; a&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; args&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		Scanner&lt;/span&gt;&lt;span&gt; scan &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Scanner&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		int&lt;/span&gt;&lt;span&gt; n &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; scan&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;nextInt&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;binaryForm&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;));&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		scan&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;close&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Lab0 到这里就结束了。下面是第二周课的细节&lt;/p&gt;
&lt;h2&gt;Class 1&lt;a href=&quot;#class-1&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;所讲内容&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;&lt;/div&gt;&lt;strong&gt;（Linked List）&lt;/strong&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;作用：&lt;/strong&gt; 链表一种基础的数据结构，在平时写程序的时候用的并不多，但在操作系统里面使用的非常多。不管是 RTOS 还是 Linux 等使用非常广泛，所以必须要搞懂链表，链表分为单向链表和双向链表，单向链表很少用，使用最多的还是双向链表。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;定义：&lt;/strong&gt; 链表是一种物理存储上非连续，数据元素的逻辑顺序通过链表中的指针链接次序，实现的一种线性存储结构。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;结构：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;链表由一系列节点（链表中每一个元素称为节点）组成，每个节点包括两个部分：
&lt;ul&gt;
&lt;li&gt;存储数据元素的数据域&lt;/li&gt;
&lt;li&gt;存储下一个节点地址的指针域&lt;/li&gt;
&lt;li&gt;首个节点的地址必须被存储&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/lianbiao.png&quot; alt=&quot;lianbiao.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;lianbiao.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;这样，链表的结构使其能够建立起各节点之间的线性关系。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;老师上课讲的英文我也听不太懂，接下来就是 Lab 时间&lt;/p&gt;
&lt;h2&gt;Lab 2&lt;a href=&quot;#lab-2&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;首先看下题目：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Given Node.java, complete List.java with
&lt;ul&gt;
&lt;li&gt;all the complete functions defined&lt;/li&gt;
&lt;li&gt;a main function has been given for the class which tests 5 functions:
&lt;ul&gt;
&lt;li&gt;isEmpty&lt;/li&gt;
&lt;li&gt;insertNode&lt;/li&gt;
&lt;li&gt;findNode&lt;/li&gt;
&lt;li&gt;removeNode&lt;/li&gt;
&lt;li&gt;displayList
Submit List.java to iSpace.
也就是通过 Node.java 里面所写的内容，用在 List.java 中，实现 5 个基本功能：&lt;strong&gt;1.判断链表是否为空&lt;/strong&gt;，&lt;strong&gt;2.插入节点&lt;/strong&gt;，&lt;strong&gt;3.寻找节点&lt;/strong&gt;，&lt;strong&gt;4.移除节点&lt;/strong&gt;，&lt;strong&gt;5.展示链表&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/UML1.png&quot; alt=&quot;UML1.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;UML1.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;div&gt;
&lt;p&gt;UML 图&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;老师给的模板如下：&lt;/p&gt;
&lt;p&gt;List.java&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; List&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	/*YOUR CODE HERE*/&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; static&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; main&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;String&lt;/span&gt;&lt;span&gt;[]&lt;/span&gt;&lt;span&gt; args&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		List&lt;/span&gt;&lt;span&gt; myList  &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; List&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;myList&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;isEmpty&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myList&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;insertNode&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot;Data of head: &quot;&lt;/span&gt;&lt;span&gt; +&lt;/span&gt;&lt;span&gt; myList&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getData&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myList&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;displayList&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myList&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;insertNode&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myList&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;displayList&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myList&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;insertNode&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; 3&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myList&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;displayList&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myList&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;insertNode&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; 4&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myList&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;displayList&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myList&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;insertNode&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; 5&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myList&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;displayList&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;myList&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;findNode&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;).&lt;/span&gt;&lt;span&gt;getData&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myList&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;removeNode&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myList&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;displayList&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myList&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;removeNode&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;4&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		myList&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;displayList&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Node.java&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; class&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	private&lt;/span&gt;&lt;span&gt; double&lt;/span&gt;&lt;span&gt; data&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	private&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt; next&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; data&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;data &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; data&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;next &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; double&lt;/span&gt;&lt;span&gt; getData&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		return&lt;/span&gt;&lt;span&gt; this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;data&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt; getNext&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		return&lt;/span&gt;&lt;span&gt; this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;next&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	public&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; setNext&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;Node&lt;/span&gt;&lt;span&gt; next&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;next &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; next&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;创建和初始化链表&lt;a href=&quot;#创建和初始化链表&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;先观察 Node.java 里面的参数，是通过&lt;strong&gt;类（class）&lt;strong&gt;来实现链表的&lt;/strong&gt;节点&lt;/strong&gt;，&lt;strong&gt;这也是最优的实现方法。可以看到 Node 中 data 是链表节点的数据域，next 是指针域。因为指针域指向链表下一个节点&lt;/strong&gt;，因此它的数据类型与当前节点一样还是 Node。&lt;/p&gt;
&lt;p&gt;接下来就是这个类的构造方法，只需要给它的数据域赋值即可。下面的三个方法是为了满足封装需求而设立的。接下来返回 List.java 研究如何插入节点。根据 UML 图写 get/set 方法就不再说了。&lt;/p&gt;
&lt;h3&gt;判断节点是否为空&lt;a href=&quot;#判断节点是否为空&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个相对容易，只需判断头节点（head）是否为空即可&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; boolean&lt;/span&gt;&lt;span&gt; isEmpty&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;head &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		return&lt;/span&gt;&lt;span&gt; true&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;span&gt; else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		return&lt;/span&gt;&lt;span&gt; false&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;插入节点&lt;a href=&quot;#插入节点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;插入节点需要将前一个指针域的值赋到该&lt;strong&gt;节点的地址&lt;/strong&gt;，而前面提到节点是通过类来表示，因此将插入节点这个&lt;strong&gt;类&lt;/strong&gt;赋到&lt;strong&gt;前一个节点&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;插入节点方法 insertNode 中传入两个参数，第一个是插入位置（index），第二个是数据。首先判断 index 是否小于 0，返回 null。接着定义一个变量 currIndex（当前索引）初始化为 1，一个变量 currNode（当前节点）初始化为链表的头节点。&lt;/p&gt;
&lt;p&gt;接下来尝试定位插入节点的位置，使用 while 循环遍历节点，只要当前节点不为 null，且索引位置比当前位置数大就一直循环，每次循环让当前节点等于下一个节点的地址（使用 Node.java 中的 getNext 方法），同时让当前索引数加 1。&lt;/p&gt;
&lt;p&gt;然后创建一个新节点，其数据域为 x（Node 构造方法）。&lt;/p&gt;
&lt;p&gt;最后插入这个新节点，判断 index 是否等于 0，0 即为该链表的头节点，使用 setNext 方法，参数即为 head 头节点，让它等于新节点的指针域，让新节点成为头节点；如果不为 0，参数为下一节点的地址，让新节点的&lt;strong&gt;指针域&lt;/strong&gt;为当前节点的&lt;strong&gt;指针域&lt;/strong&gt;，设置当前节点的&lt;strong&gt;指针域&lt;/strong&gt;为&lt;strong&gt;新节点&lt;/strong&gt;即可。代码如下&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt; insertNode&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt; index&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; double&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	if&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;index &lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	int&lt;/span&gt;&lt;span&gt; currIndex &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	Node&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	while&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;currNode &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt; index &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; currIndex&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		currIndex &lt;/span&gt;&lt;span&gt;++&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;span&gt;		&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	if&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;index &lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt; &amp;amp;&amp;amp;&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	Node&lt;/span&gt;&lt;span&gt; newNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; new&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;x&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	if&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;index &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		newNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setNext&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;head&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		this&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;head &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; newNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		newNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setNext&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setNext&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;newNode&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	return&lt;/span&gt;&lt;span&gt; newNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;寻找节点&lt;a href=&quot;#寻找节点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个也比较容易，findNode 会给你一个数据 x，让你从链表中找到一个数据域与其相同的节点。&lt;/p&gt;
&lt;p&gt;只需要定义节点变量 currNode 等于头节点，当该节点不为空就一直遍历，再在其中加入判断看它是否与所给数据相同即可：相同就返回，不相同返回就&lt;strong&gt;当前节点的指针域&lt;/strong&gt;。&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt; findNode&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	Node&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; head&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	while&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;currNode &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;		&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getData&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; ==&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		else&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	return&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;删除节点&lt;a href=&quot;#删除节点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个其实只需要将前节点指针域赋到后面节点的地址，中间的节点会被&lt;strong&gt;垃圾收集器（Garbage Collection）&lt;/strong&gt; 自动回收并不再使用对象所占用的资源。&lt;/p&gt;
&lt;p&gt;只是这样会出现特殊情况，即移除节点可能为当前&lt;strong&gt;链表的最后节点&lt;/strong&gt;，因此需设置节点类型变量 lastNode，使其初始化为空。&lt;/p&gt;
&lt;p&gt;依旧定义变量 currNode，依旧相同 while 循环。可以使用嵌套 if 语句：在当前节点不为空的情况下，如果当前节点数据等于所给数据 x，那么使头节点等于当前节点的下一节点，否则使 lastNode 的指针域等于当前节点的指针域。&lt;/p&gt;
&lt;p&gt;如果当前节点为空，则&lt;strong&gt;使 lastNode 等于 currNode&lt;/strong&gt;，让&lt;strong&gt;currNode 等于下个节点的地址&lt;/strong&gt;，代码如下&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; Node&lt;/span&gt;&lt;span&gt; removeNode&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;double&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	Node&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; head&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	Node&lt;/span&gt;&lt;span&gt; lastNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	while&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;currNode &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getData&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; ==&lt;/span&gt;&lt;span&gt; x&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;lastNode &lt;/span&gt;&lt;span&gt;==&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				head &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			}&lt;/span&gt;&lt;span&gt; else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;				lastNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;setNext&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			return&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		}&lt;/span&gt;&lt;span&gt; else&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			lastNode&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;currNode&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;span&gt;				&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	return&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;展示节点&lt;a href=&quot;#展示节点&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;这个只需要按照 sample 写就好&lt;/p&gt;
&lt;p&gt;依旧定义 currNode，依旧 while 循环，只要节点不为空就一直打印 “-&amp;gt;” 最后把换行打出来即可&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;public&lt;/span&gt;&lt;span&gt; void&lt;/span&gt;&lt;span&gt; displayList&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	Node&lt;/span&gt;&lt;span&gt; currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; head&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	while&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;currNode &lt;/span&gt;&lt;span&gt;!=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getData&lt;/span&gt;&lt;span&gt;());&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt; !=&lt;/span&gt;&lt;span&gt; null&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;			System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;print&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&quot; -&amp;gt; &quot;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;		currNode &lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt; currNode&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getNext&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;	System&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;out&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;println&lt;/span&gt;&lt;span&gt;();&lt;/span&gt;&lt;span&gt;//c4&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;将上述代码添加到 List.java 中即可。&lt;/p&gt;</content:encoded><category>category:学习笔记</category><category>category:代码学习</category><category>tag:JAVA</category><category>tag:链表</category><category>tag:递归</category><category>tag:数据结构</category></item><item><title>数学建模经历以及获奖建议</title><link>https://www.weisifengbuxi.top/post/ef6a5850</link><guid isPermaLink="false">ef6a5850</guid><description>2025 年的全国大学生数学建模比赛（CUMCM）已经落下帷幕。以下是博主的比赛经历。 比赛规则 三人 为一对，分别担任 建模手 ， 编程手 和 论文手 选择一组题目，解决对应问题并上传。通常包含 一篇论文（PDF 格式）以及支撑材料（压缩文件） 数学建模竞赛的基本流程 由 建模手 将问题转化为 数</description><pubDate>Wed, 10 Sep 2025 17:14:41 GMT</pubDate><content:encoded>&lt;p&gt;2025 年的全国大学生数学建模比赛（CUMCM）已经落下帷幕。以下是博主的比赛经历。&lt;/p&gt;
&lt;h2&gt;比赛规则&lt;a href=&quot;#比赛规则&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;三人&lt;/strong&gt;为一对，分别担任&lt;strong&gt;建模手&lt;/strong&gt;，&lt;strong&gt;编程手&lt;/strong&gt;和&lt;strong&gt;论文手&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;选择一组题目，解决对应问题并上传。通常包含&lt;strong&gt;一篇论文（PDF 格式）以及支撑材料（压缩文件）&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;数学建模竞赛的基本流程&lt;a href=&quot;#数学建模竞赛的基本流程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;由&lt;strong&gt;建模手&lt;/strong&gt;将问题转化为&lt;strong&gt;数学模型&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;由&lt;strong&gt;编程手&lt;/strong&gt;根据&lt;strong&gt;数学模型&lt;/strong&gt;编写&lt;strong&gt;程序代码&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;将&lt;strong&gt;数据&lt;/strong&gt;输入&lt;strong&gt;程序&lt;/strong&gt;，得到&lt;strong&gt;结果&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;由&lt;strong&gt;论文手&lt;/strong&gt;将&lt;strong&gt;问题&lt;/strong&gt;、&lt;strong&gt;数学模型&lt;/strong&gt;、&lt;strong&gt;结果&lt;/strong&gt;整理成&lt;strong&gt;论文&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;论文&lt;/strong&gt;与&lt;strong&gt;程序代码&lt;/strong&gt;构成问题最终的&lt;strong&gt;解决方案&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这里引用&lt;a href=&quot;https://blog.marquis.eu.org/post/65f5385a/&quot;&gt;小嗷犬&lt;/a&gt;的图片来解释
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/jianmo1.png&quot; alt=&quot;jianmo1.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;jianmo1.png&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/jianmo2.png&quot; alt=&quot;jianmo2.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;jianmo2.png&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;数学建模竞赛详细介绍&lt;a href=&quot;#数学建模竞赛详细介绍&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;全国大学生数学建模竞赛&lt;/strong&gt;，以下简称&lt;strong&gt;国赛&lt;/strong&gt;，是&lt;strong&gt;中国规模最大的数学建模竞赛&lt;/strong&gt;，也是&lt;strong&gt;世界上规模最大的数学建模竞赛&lt;/strong&gt;。参加比赛不仅可以能&lt;strong&gt;增长见识&lt;/strong&gt;，如果能获奖，则该奖项可以被写在&lt;strong&gt;履历&lt;/strong&gt;中来丰富自己的&lt;strong&gt;学术经历&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;以今年（2025）国赛 广东赛区为例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;比赛时间&lt;/strong&gt;：九月四号下午六点开赛，到九月七号晚上八点截止&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;比赛时长&lt;/strong&gt;：3 天&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;报名费用&lt;/strong&gt;：100 元 / 人&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;比赛语言&lt;/strong&gt;：中文&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;比赛题目&lt;/strong&gt;：ABCDE 五组题目，本科生只能选择 ABC 组题目，专科生可以选择 ABCDE 题目&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;比赛奖项&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;国家级&lt;/strong&gt;：一等奖、二等奖&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;省级&lt;/strong&gt;：一等奖、二等奖、三等奖&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;赞助商特别奖项&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;赛前准备&lt;a href=&quot;#赛前准备&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;选择队友&lt;a href=&quot;#选择队友&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;以博主自身经历来看，数学建模比赛的特点是&lt;strong&gt;时间紧&lt;/strong&gt;、&lt;strong&gt;任务重&lt;/strong&gt;，因此选择队友是非常重要的一步。一个好的队友能在关键时刻起到决定性作用。&lt;/p&gt;
&lt;p&gt;团队分工不一定要十分明确，例如在这次比赛中博主是编程手，但论文是博主使用 latex 生成的。论文手是博主朋友，他只需将对应内容发给博主即可，而他也帮助博主编写相关程序。建模手则是位女生，她在最后的时候帮助博主寻找合适图片，文献来帮博主分担工作。由此可见，模型构建与算法实现是紧密结合的。三个位置相互帮助才能产出一个好的作品。&lt;/p&gt;
&lt;p&gt;能否完赛，取决于建模手和编程手，建模手和编程手决定了&lt;strong&gt;团队的下限&lt;/strong&gt;；能否拿奖，取决于论文手，论文手决定了&lt;strong&gt;团队的上限&lt;/strong&gt;。因为评委老师一开始只能看到你的论文。因此论文的&lt;strong&gt;美观程度&lt;/strong&gt;对于评委影响是十分巨大的。&lt;/p&gt;
&lt;h2&gt;知识储备&lt;a href=&quot;#知识储备&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;因为博主是论文手，因此本文主要从论文手角度分析其所需要的的知识储备：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;论文排版&lt;/strong&gt;：推荐使用&lt;code&gt;LaTeX&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;论文参考文献&lt;/strong&gt;：&lt;code&gt;BibTeX&lt;/code&gt;等&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;另外为新手推荐&lt;a href=&quot;https://www.weisifengbuxi.top/post/8ed9156c&quot;&gt;数模资料&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;工具准备&lt;a href=&quot;#工具准备&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;由于比赛要求论文格式为 pdf，因此推荐使用 latex 编辑器&lt;strong&gt;TeXstuio&lt;/strong&gt;，网上有不少安装教程，例如&lt;a href=&quot;https://zhuanlan.zhihu.com/p/1921310237857648721&quot;&gt;TeXstudio 安装&lt;/a&gt;，如果觉得安装时间过长的话（大约 40 分钟），那么可以考虑使用 &lt;a href=&quot;https://cn.overleaf.com/&quot;&gt;Overleaf&lt;/a&gt;来写论文， &lt;strong&gt;Overleaf&lt;/strong&gt;是一个支持多人同时编辑的在线 LaTeX 编辑器。&lt;/p&gt;
&lt;p&gt;利用 LaTeX 运行后直接生成 &lt;strong&gt;pdf 文件&lt;/strong&gt;，因此不必再将其他格式文件转成 pdf 格式。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LaTex&lt;/strong&gt;：需要一定的基础，若想要速成则推荐&lt;a href=&quot;https://www.bilibili.com/video/BV11h41127FD/?spm_id_from=333.1387.top_right_bar_window_default_collection.content.click&amp;amp;vd_source=49c854c69cd7c0deb0a5c0f5c2535bec&quot;&gt;一个非常快速的 Latex 入门教程&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LaTex 论文模板&lt;/strong&gt;：推荐&lt;a href=&quot;https://www.overleaf.com/latex/templates/quan-guo-da-xue-sheng-shu-xue-jian-mo-jing-sai-lun-wen-mo-ban/gfyqvcbzywcm&quot;&gt;全国大学生数学建模竞赛论文模板&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.geogebra.org/&quot;&gt;GeoGebra&lt;/a&gt;：几何图、函数图等&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LaTeX 公式编辑器&lt;/strong&gt;：&lt;a href=&quot;https://latex.codecogs.com/eqneditor/editor.php&quot;&gt;LaTeX 公式编辑器 1&lt;/a&gt;，或者 &lt;a href=&quot;https://www.latexlive.com/&quot;&gt;LaTeX 公式编辑器 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;本人经历&lt;a href=&quot;#本人经历&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;从找队友说起，博主和朋友打算参加比赛。于是在校园墙发布帖子，很快就有人来加微信询问。由于我俩都是计算机专业的，所以最后选择了应用数学专业的同学，她来负责建模。&lt;/p&gt;
&lt;p&gt;由于报名人数太多，学校要求队内没有参加过美赛（美国大学生数学建模竞赛）并且拿 S 奖以上同学的队伍进行模拟比赛。于是博主便开始找关于国赛论文的资料，找到了小嗷犬发布相关模板（做博客的想法也是从那时候开始的）。后面比赛是在家里面做完的，大概看了一下，绝大多数队伍都通过了初选。&lt;/p&gt;
&lt;p&gt;在后面就是学雅思，学车了。其实没怎么学相关知识。只是提前回学校看了看。&lt;/p&gt;
&lt;h2&gt;比赛情况&lt;a href=&quot;#比赛情况&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我们选择的是 A 组题《烟幕干扰弹的投放策略》。一共是有 5 道问题。第一问就是纯物理模型计算，我查找相关论文的时候看到了这个
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/fengmian3.1.png&quot; alt=&quot;fengmian3.1.png&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;fengmian3.1.png&lt;/figcaption&gt;&lt;/figure&gt;
要知道当时比赛也就开始了 2 小时，点进去发现内容和 A 题完全一致的时候我人直接懵了。&lt;p&gt;&lt;/p&gt;
&lt;p&gt;然后建模手开始计算，最后算出答案发现和其他人答案不一样（其他人答案哪来的你别问），就开始改，改了半天还是这个答案。于是启动 GPT-5 最新模型，发现思路没有问题。但答案就是出不来。最后搞到 12 点也没出来，女生说太晚了先睡觉吧。我俩也怕女生熬太久身体扛不住，就只能先宿舍睡觉了。因为三点没有大巴车，我和我朋友又花了 20 分钟走回宿舍。收拾完躺到床上就 2 点了，第一天的建模以信心满满开始，以无解失败告终。&lt;/p&gt;
&lt;p&gt;第二天起来我先写程序，跑了一上午好不容易跑出来并加到论文中去，但第一题还是出不来正确结果。下午我和我朋友坐机房里面分析，突然看到一组数据不太对，然后我俩就问 AI 为什么思路一样数据不对，得到的答案是重力加速度我们 g 取的 10，别人取的 9.8。。。&lt;/p&gt;
&lt;p&gt;那很明显了，初高中的后遗症，经典默认题目会给 g=10m/s^2，这波建模手全责。等第一题搞完第二天都快结束了，然后建模手开始做第二题，这题倒是很快，不过等论文写好已经是凌晨 2 点了，重复昨天的流程。第二天也结束了。&lt;/p&gt;
&lt;p&gt;等起来已经是 11 点了，赶紧吃饭。第三天需要把第三问第四问写出来，不然第四天晚上交很可能来不及。 第三位算出来六点多，和别人的十一点多差的有点大。建模手直接不会了，问 AI，AI 算的也不是这个，第四问也是如此。就这样一直改，改到 3 点最终确定使用一开始的方案，然后回去休息，等他躺床上已经是 5 点了，天都快亮了。&lt;/p&gt;
&lt;p&gt;最后一天我们借助 AI 完成了第五问，把论文的相关内容进行填充，把图片加入文章，找了相关文献，还写了支撑材料。多亏 GPT-5 大人，让我们在 7 点半的时候生成了 MD5 码，并在最后成功上传作品。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; 全国大学生数学建模比赛&lt;/li&gt;
&lt;li&gt; 全国大学生 AI 建模比赛&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;作品信息&lt;a href=&quot;#作品信息&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我们的作品正文部分共计 23 页，算上附录的代码共 97 页。使用了运动学模型，模拟退火算法，候选策略池和蚁群算法，以及分时分段拼接遮蔽策略。以下是我们论文的部分摘要：&lt;/p&gt;
&lt;p&gt;对于问题一，本文建立了导弹 — 真目标 — 烟幕云团的几何相交判据，将题目中的遮蔽判定为云团中心到视线线段的最小距离不超过 10m，同时在有效窗内离散时间、先粗扫后用二分 Brent 法求出进入与离开遮蔽时刻。接着在运动学计算中将导弹视为匀速飞行，干扰弹视为抛体运动再配合全局时间网格评估最小距离并提取最长连续遮蔽段。最终数值结果给出 τin=2.913s、τout =4.348s，对应有效遮蔽时长∆τ =1.435s。&lt;/p&gt;
&lt;p&gt;对于问题二，建立 “投放 — 起爆 — 下沉” 的运动学模型，在扫描满足 d2 ≤ 100 的最长连续段作为目标函数的同时，也全局时间网格上预计算导弹与视线。在编码时采用遗传算法并且配合核心操作模块，多次重启以提升收敛稳定性。得到最优投放策略：速度 v ≈ 106.82m/s, 航向 θ ≈ 178.46◦, 起爆点 Rburst≈(17451.9,9.4,1753.2)，投放点 Rdrop≈(17769.90,0.73,1800.00)。&lt;/p&gt;
&lt;p&gt;对于问题三，通过优化投放策略，使遮蔽时长最大。我们建立 “导弹恒速直线 — 烟幕云团抛体起爆后下沉” 的运动学模型与 “球 — 视线线段相交” 遮蔽判据，在速度 v = 140m/s、航向 θ = 180◦ 的启发式设定下，采用核心操作模块，最终得出最优遮蔽时长为 6.80s，第一枚投放点与起爆点为 (17800,0,1800) 与 (17310,0,1739.975)，第二枚投放点与起爆点为 (17310,0,1800), 与 (16540,0,1651.775)，第三枚投放点与起爆点 (17030,0,1800) 与 (16190,0,1623.600)。&lt;/p&gt;
&lt;p&gt;对于问题四，构建导弹以 300 米每秒匀速运动、无人机沿等高直线飞行、烟幕先做 “自由落体” 运动，起爆后以 3 米每秒下沉的运动学模型，以便让三枚烟幕的并集有效 遮蔽时长达到最大。借助点到线段距离以及细时间步积分构建精确评估器，在速度 70 至 140 米每秒、投放与延时 0.1 至 10 秒的可行范围内，运用 “候选策略池 + 蚁群算法” 进行全局寻优，以单机严格遮蔽秒数作为启发，并对当代最优解添加信息素以提高收敛效率，数值结果显示：最优方案的并集有效遮蔽总时长为 11.7 秒。&lt;/p&gt;
&lt;p&gt;对于问题五，采用 “分时分段拼接遮蔽” 策略。在构建基于几何逆解的烟幕投放 模型之下，设置导弹与真目标之间的线段为爆点。在各种约束条件包括：速度约束 (70–140m/s)、每架无人机投放间隔 (≥1s)、起爆延时 (0.1–10s) 与云团判据 (半径 10m, 起爆后 20s, 下沉 3m/s) 下优化模型。再设计密集起爆时隙网格、竖直高度离散扫描、半秒级双向时间微调，并采用 “遮蔽最少优先” 的二次补位提升总量。最终得出三导弹遮蔽时长分别为 6.9s、6.8s、3.5s，总计 17.2s。&lt;/p&gt;
&lt;h2&gt;最后整活&lt;a href=&quot;#最后整活&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;一道惊怒的声音响起：“小子，你都做了什么？没有 GPT，我等如何建模？” 只听博主淡然一笑：“很简单，我来建模不就是了”。说罢他的气息不再掩饰，显露而出，建模颠佬！一瞬间，全场又是一寂。众人只听道他口中吟道：&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;&lt;strong&gt;灯火通明建模夜，题组如潮案前叠。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;乱麻数据寻规律，模型初构意难决。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;迭代数回终有隙，误差如刺心有泪。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;挑灯再改星渐淡，不肯轻言方案歇。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;初闻建模知路远，仍携纸笔向难前。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;三月磨题身似茧，团队同研影如烟。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;百算千推心似铁，殚精只为构精尖。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;今朝赛场挥毫处，炼数炼模更炼天！&lt;/strong&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;最后，靠着这些经验，第一次参赛拿个省级二等奖是没什么问题的。&lt;/p&gt;</content:encoded><category>category:学习笔记</category><category>category:比赛</category><category>tag:数学建模</category><category>tag:LaTex</category></item><item><title>科目二没过给我的反思</title><link>https://www.weisifengbuxi.top/post/74bcc131</link><guid isPermaLink="false">74bcc131</guid><description>8月8号考的科目二，可惜没过。按理来说应该是没什么问题的，后来想想，确实是我大意了，考前还是不够细致，临阵时候也不够镇定。 情况 由于学校原因得学习雅思，从7月14号开始，学到8月3号结束。科目二的练习是在7月15号开始，因为一学就是一天所以雅思结课前我是没法报考科目二的，这也给了我接近20天的时间</description><pubDate>Sun, 10 Aug 2025 17:14:41 GMT</pubDate><content:encoded>&lt;p&gt;8 月 8 号考的科目二，可惜没过。按理来说应该是没什么问题的，后来想想，确实是我大意了，考前还是不够细致，临阵时候也不够镇定。&lt;/p&gt;
&lt;h2&gt;情况&lt;a href=&quot;#情况&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;由于学校原因得学习雅思，从 7 月 14 号开始，学到 8 月 3 号结束。科目二的练习是在 7 月 15 号开始，因为一学就是一天所以雅思结课前我是没法报考科目二的，这也给了我接近 20 天的时间练车。&lt;/p&gt;
&lt;p&gt;按理来说是没什么问题的，正常情况是学习 7 天然后开始去总校进行 1：1 训练（我平时练习的场地没有 S 弯道，只能去总校练。同时模拟考试流程）。学了 20 天那我自然很有信心。然而发现科目二报名时间很少，并且 8 月 8 号之前的时间全部冲突。没办法只好报这天的。&lt;/p&gt;
&lt;p&gt;然后 8 月 3 号当天开始 1：1……最重要的第一天就没法去。第二天是手动挡休息，只有自动挡练习，我又没去成…因此我第一次过流程是 8 月 5 号，印象很深刻，那天我六点半起的床，7 点到分部等车去总部，车上还有练科目三的，他们是半途下车，我第一次去什么也不懂跟着他们就下了车。&lt;/p&gt;
&lt;p&gt;我就感觉不太对劲，一打听才知道没坐到站就下车了。没办法又打了个车去的总部，到了一看队伍排出校门了。最后领卡搞了一个小时才进去。进去坐到座位上接着等，因为人很多（其实人相对其他时间段很少了，但还是一个教练带十来个学员还是很多），等到十点多才叫到我。&lt;/p&gt;
&lt;p&gt;我远远一看，那捷达岁数可能跟我差不多，车上坐了四个人，不知道是教练为了舒服把座位往后调导致我坐得很挤还是那车本来就小，反正腿伸不开很难受。加上教练和车外一个兄弟相互递烟，还不开窗户搞得车上全是烟味，我们后面三个兄弟吸了俩小时二手烟&lt;/p&gt;
&lt;p&gt;完了这教练还直播，让我们打开抖音给他点赞。我一看直播间加上我，加上他管理员老婆一共就 4 个人。更逆天的是他还要我们给他点到一万赞。。。&lt;/p&gt;
&lt;p&gt;我们点到一万赞他也不直播了，让我们观摩别人怎么找点位，就这样看到十二点半，实在是热的受不了了，我和旁边兄弟也聊熟了，就去吃了个饭。&lt;/p&gt;
&lt;p&gt;一点半的时候就到我了，我就开始第一次练车，一共是四条路线，每条路线跑一次，除了 S 弯道第一次学，其他我没什么问题，唯一小插曲的是倒车入库，就是教练让我比平时都往后多退一点，这就埋下伏笔了。&lt;/p&gt;
&lt;p&gt;当时肯定不知道么，觉得已经没什么问题了，再来一次可以直接考了&lt;/p&gt;
&lt;p&gt;然后坐在外面开心等第二轮大展身手，教练在里面就再也没消息了。。。&lt;/p&gt;
&lt;p&gt;我和我刚认识的兄弟从两点开始等，边等边睡，睡到 4 点起来还是没有消息，旁边女生去了都回来了，我们俩都懵了&lt;/p&gt;
&lt;p&gt;就这样继续等，等到五点又让我去，然后跟我说今天没时间了随便挑一条线练一次吧。就这样第一天结束了。&lt;/p&gt;
&lt;p&gt;我想这第一天因为我的问题去得晚了，那第二天早点去呗。确实去的早，不过第二天是模拟，就是一个人在车上练，机器给你算分。当时前面项目都没问题，就是半坡距离把握不准，挂了两次。然后教练讲了讲细节就结束了&lt;/p&gt;
&lt;p&gt;七号按时间表不练，但教练让我们下午去再找找问题，再把问题一解决，我就感觉更没问题了就等 8 号的考试了。&lt;/p&gt;
&lt;h2&gt;考试当天&lt;a href=&quot;#考试当天&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;我强烈建议大家考科目二的时候，要么早早就去，早到驾校没开门就到了，要么就睡到自然起再去因为人非常多。我七点坐车，到了那里七点五十。排队排到 11 点半，早知道我就睡好了再去 QAQ。&lt;/p&gt;
&lt;p&gt;好不容易排到到我，发现照片跟我本人不一样，是完全不一样那种，我怀疑可能是拍照出问题了，没办法再去拍照。然后就开始考试，&lt;/p&gt;
&lt;p&gt;真的很熟练，右边倒车入库停的非常标准，就是左边的库有点小问题，有点太靠右了，这样来说我就应该不回方向盘，先保证两边距离，再微调使车身正朝前方，我平时遇到过这种情况，也就这样做了没什么问题，然而当我停下来的时候系统突然说车压线，扣我 100 分。我人直接懵了，当时我应该立刻下车看车是什么情况，但我太自信了，以为是压到两侧的线了，丝毫没想到是后退太多导致车身压住后线了。&lt;/p&gt;
&lt;p&gt;把后面项目做完，明白问题之后手感也来了，自信回到起点打算一雪前耻&lt;/p&gt;
&lt;p&gt;第二次真可以说是行云流水，就是左边的倒车入库，还是一样的问题，还是扣我 100 分，我这下人彻底懵了。要说是碰到后线，那为什么在右库没提示呢。碰到两边线就跟不可能了，毕竟眼睛一直盯着。那是什么问题呢？我也不知道，就迷迷糊糊把车开回去就结束了。以上说压后线是我的猜测，因为没有照片。直到到我写这篇文章的时候我都不知道到底压了哪根线。&lt;/p&gt;
&lt;p&gt;唯一能给我一点安慰的就是那个跟我关系不错兄弟也没过（不是幸灾乐祸），他情况跟我差不多，是学托福的 3 号才结束。不过他 3 号请假来学车了，因此比我多练了一天。他说他考试时候车突然熄火了，然后他挂着档就紧急点火了，直接挂了。第二次是直角拐弯的时候压线了两次全挂。那哥们今年高考，考了 691 分，去了清华。一想到去清华的学霸和我一样我心里就好受不少（）。&lt;/p&gt;
&lt;h2&gt;反思&lt;a href=&quot;#反思&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;和我们一起练的还有一个女生，那个女生大四，给我的感觉就是反应有一些慢（没别的意思哈），但是她很努力练，自然而然的过了。对比我和那个兄弟，我俩太自信了，这导致在一些细节上把握不到位，明明在分校练的时候教练就告诉我点位很多次了。但我把 1：1 教练随意的一句话话当正确的。 完全没想到他当时玩手机很可能没注意看。这一对比就能看出分校带我的吴教练的用心，平时我练习时候他从不看手机，考试当天还在叮嘱我一些细节。&lt;/p&gt;
&lt;p&gt;那个兄弟可能完全没考虑到熄火这种情况，导致后面一步错，步步错。&lt;/p&gt;
&lt;p&gt;这件事其实不大，无非再考一次，但也提醒我&lt;strong&gt;细节问题出一点差错都是致命的。&lt;strong&gt;那个兄弟的错误我也应该避免。以后有些事是没有机会再来一次的，要&lt;/strong&gt;未虑胜，先虑败&lt;/strong&gt;啊。唉，切记切记！&lt;/p&gt;</content:encoded><category>category:生活日常</category><category>tag:生活</category><category>tag:科目二</category></item><item><title>AnZhiYu主题美化：为爱好的游戏卡片添加头像</title><link>https://www.weisifengbuxi.top/post/e4925c7a</link><guid isPermaLink="false">e4925c7a</guid><description>之前看张洪heo大佬的博客，在他的个人主页，爱好的游戏卡片上，发现了他将自己喜欢的英雄展示了出来。 因为我也喜欢玩联盟（尤其他喜欢玩的英雄恰巧我也喜欢玩），于是也想在自己的博客中添加类似的功能。花了一下午的时间，终于实现了这个功能。 效果： 教程 打开文件：博客根目录/themes/anzhiyu/</description><pubDate>Wed, 01 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;之前看张洪 heo 大佬的&lt;a href=&quot;https://blog.zhheo.com/&quot;&gt;博客&lt;/a&gt;，在他的个人主页，爱好的游戏卡片上，发现了他将自己喜欢的英雄展示了出来。&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/fengmian11.1.webp&quot; alt=&quot;fengmian11.1.webp&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;fengmian11.1.webp&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;因为我也喜欢玩联盟（尤其他喜欢玩的英雄恰巧我也喜欢玩），于是也想在自己的博客中添加类似的功能。花了一下午的时间，终于实现了这个功能。&lt;/p&gt;
&lt;p&gt;效果：
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/fengmian11.webp&quot; alt=&quot;fengmian11.webp&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;fengmian11.webp&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;h2&gt;教程&lt;a href=&quot;#教程&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;打开文件：博客根目录/themes/anzhiyu/layout/includes/page/about.pug&lt;/p&gt;
&lt;p&gt;在大约 175 行，找到如下代码段：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;      .author-content&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        - &lt;/span&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt;game_tips&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; game_title&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; game_uid&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; game_bg&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; item&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;game&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        .author-content-item.game-yuanshen&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;`background: url(&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;game_bg&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;) top / cover no-repeat;`&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          .card-content&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            .author-content-item-tips&lt;/span&gt;&lt;span&gt;=game_tips&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            span&lt;/span&gt;&lt;span&gt;.author-content-item-title&lt;/span&gt;&lt;span&gt;=game_title&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            .content-bottom&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              .icon-group&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                .loading-bar&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;role&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&apos;presentation&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;aria-hidden&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&apos;true&apos;&lt;/span&gt;&lt;span&gt; style&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;`&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;game_title&lt;/span&gt;&lt;span&gt; !=&lt;/span&gt;&lt;span&gt; &quot;原神&quot;&lt;/span&gt;&lt;span&gt; ?&lt;/span&gt;&lt;span&gt; &quot;display: none&quot;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &quot;&quot;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;`&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              .tips.game-yuanshen-uid&lt;/span&gt;&lt;span&gt;=game_uid&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        .author-content-item.comic-content&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          .card-content&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            - &lt;/span&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt;comic_tips&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; comic_title&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; comic_list&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; item&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;comic&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            .author-content-item-tips&lt;/span&gt;&lt;span&gt;=comic_tips&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            .author-content-item-title&lt;/span&gt;&lt;span&gt;=comic_title&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            .comic-box&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              if&lt;/span&gt;&lt;span&gt; comic_list&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                each&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;span&gt; comic_list&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  a&lt;/span&gt;&lt;span&gt;.comic-item&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;href&lt;/span&gt;&lt;span&gt;=i&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;href, &lt;/span&gt;&lt;span&gt;target&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;_blank&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;=i&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;name)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    .comic-item-cover&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      img&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;src&lt;/span&gt;&lt;span&gt;=i&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;cover, &lt;/span&gt;&lt;span&gt;alt&lt;/span&gt;&lt;span&gt;=i&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;name)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;将其修改为：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;      .author-content&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        - &lt;/span&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt;game_tips&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; game_title&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; game_uid&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; game_bg&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; item&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;game&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        .author-content-item.game-yuanshen&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;style&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;`background: url(&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;game_bg&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;) top / cover no-repeat;`&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          .card-content&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            .author-content-item-tips&lt;/span&gt;&lt;span&gt;=game_tips&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            span&lt;/span&gt;&lt;span&gt;.author-content-item-title&lt;/span&gt;&lt;span&gt;=game_title&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            .hero-group&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              img&lt;/span&gt;&lt;span&gt;.hero-group-item&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                data-tooltip&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;提示信息1&quot;&lt;/span&gt;&lt;span&gt;                            //&lt;/span&gt;&lt;span&gt;替换为你喜欢的角色名称&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://xxxxxxxxxx.com/your-image1.webp&quot;&lt;/span&gt;&lt;span&gt;     //&lt;/span&gt;&lt;span&gt;替换为你喜欢的角色头像&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                alt&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;提示信息1&quot;&lt;/span&gt;&lt;span&gt;)                                   //替换为你喜欢的角色名称&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              img&lt;/span&gt;&lt;span&gt;.hero-group-item&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                data-tooltip&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;提示信息2&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://xxxxxxxxxx.com/your-image1.webp&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                alt&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;提示信息2&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              img&lt;/span&gt;&lt;span&gt;.hero-group-item&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                data-tooltip&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;提示信息3&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://xxxxxxxxxx.com/your-image1.webp&quot;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                alt&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;提示信息3&quot;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            .hero-tooltip&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            .content-bottom&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              .icon-group&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                .loading-bar&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;role&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&apos;presentation&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;aria-hidden&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&apos;true&apos;&lt;/span&gt;&lt;span&gt; style&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;`&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span&gt;game_title&lt;/span&gt;&lt;span&gt; !=&lt;/span&gt;&lt;span&gt; &quot;原神&quot;&lt;/span&gt;&lt;span&gt; ?&lt;/span&gt;&lt;span&gt; &quot;display: none&quot;&lt;/span&gt;&lt;span&gt; :&lt;/span&gt;&lt;span&gt; &quot;&quot;&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt;`&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              .tips.game-yuanshen-uid&lt;/span&gt;&lt;span&gt;=game_uid&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;        .author-content-item.comic-content&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          .card-content&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            - &lt;/span&gt;&lt;span&gt;let&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;span&gt;comic_tips&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; comic_title&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; comic_list&lt;/span&gt;&lt;span&gt;}&lt;/span&gt;&lt;span&gt; =&lt;/span&gt;&lt;span&gt; item&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;comic&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            .author-content-item-tips&lt;/span&gt;&lt;span&gt;=comic_tips&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            .author-content-item-title&lt;/span&gt;&lt;span&gt;=comic_title&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;            .comic-box&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              if&lt;/span&gt;&lt;span&gt; comic_list&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                each&lt;/span&gt;&lt;span&gt; i &lt;/span&gt;&lt;span&gt;in&lt;/span&gt;&lt;span&gt; comic_list&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  a&lt;/span&gt;&lt;span&gt;.comic-item&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;href&lt;/span&gt;&lt;span&gt;=i&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;href, &lt;/span&gt;&lt;span&gt;target&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;_blank&quot;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;title&lt;/span&gt;&lt;span&gt;=i&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;name)&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                    .comic-item-cover&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      img&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;src&lt;/span&gt;&lt;span&gt;=i&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;cover, &lt;/span&gt;&lt;span&gt;alt&lt;/span&gt;&lt;span&gt;=i&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;name)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;复制粘贴之后，你需要先修改这段代码格式。&lt;/p&gt;
&lt;p&gt;然后，需要修改这段代码中的这一部分：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;img&lt;/span&gt;&lt;span&gt;.hero-group-item&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;data-tooltip&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;提示信息1&quot;&lt;/span&gt;&lt;span&gt;                            //&lt;/span&gt;&lt;span&gt;替换为你喜欢的角色名称&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;src&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;https://xxxxxxxxxx.com/your-image1.webp&quot;&lt;/span&gt;&lt;span&gt;     //&lt;/span&gt;&lt;span&gt;替换为你喜欢的角色头像&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;alt&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&quot;提示信息1&quot;&lt;/span&gt;&lt;span&gt;)                                    //替换为你喜欢的角色名称&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;每一段这个代码即表示一个头像，展示顺序为从左到右，你可以根据自己的喜好，添加多个头像。&lt;/p&gt;
&lt;p&gt;然后还是这个文件,在文件最下方，也就是 script 标签内，添加如下代码：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;      function&lt;/span&gt;&lt;span&gt; initEventDelegation() {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          const&lt;/span&gt;&lt;span&gt; heroGroup = document.querySelector(&apos;.hero-group&apos;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          const&lt;/span&gt;&lt;span&gt; tooltip = document.querySelector(&apos;.hero-tooltip&apos;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt;heroGroup) &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              setTimeout&lt;/span&gt;&lt;span&gt;(initEventDelegation&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt; 100&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              return&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          if&lt;/span&gt;&lt;span&gt; (&lt;/span&gt;&lt;span&gt;!&lt;/span&gt;&lt;span&gt;tooltip) &lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              console&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;error&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;提示框元素未找到&apos;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              return&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          // 使用事件委托，在父元素上监听&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          heroGroup&lt;/span&gt;&lt;span&gt;.addEventListener&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;mouseover&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; (e)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              if&lt;/span&gt;&lt;span&gt; (e.target.classList.contains(&apos;hero-group-item&apos;))&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  const&lt;/span&gt;&lt;span&gt; allItems&lt;/span&gt;&lt;span&gt; = document&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;querySelectorAll&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;.hero-group-item&apos;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  // 变暗其他头像&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  allItems.forEach(item =&amp;gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      if (item !== e.target) item.classList.add(&apos;dimmed&apos;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  });&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  // 显示提示框&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  const&lt;/span&gt;&lt;span&gt; tipText&lt;/span&gt;&lt;span&gt; = e&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;target&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getAttribute&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;data-tooltip&apos;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  if&lt;/span&gt;&lt;span&gt; (tipText)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      tooltip.textContent&lt;/span&gt;&lt;span&gt; = tipText&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      // 计算提示框位置&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      const&lt;/span&gt;&lt;span&gt; targetRect&lt;/span&gt;&lt;span&gt; = e&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;target&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getBoundingClientRect&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      const&lt;/span&gt;&lt;span&gt; tooltipRect&lt;/span&gt;&lt;span&gt; = tooltip&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;getBoundingClientRect&lt;/span&gt;&lt;span&gt;()&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      // 计算提示框位置（在头像上方居中）&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      let&lt;/span&gt;&lt;span&gt; left&lt;/span&gt;&lt;span&gt; = targetRect&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;left &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; (targetRect&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;width &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; (tooltipRect&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;width &lt;/span&gt;&lt;span&gt;/&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      let&lt;/span&gt;&lt;span&gt; top&lt;/span&gt;&lt;span&gt; = targetRect&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;top &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; tooltipRect&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;height &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; 10&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      // 边界检查，确保提示框不会超出屏幕&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      if&lt;/span&gt;&lt;span&gt; (left &amp;lt; 10)&lt;/span&gt;&lt;span&gt; left&lt;/span&gt;&lt;span&gt; = &lt;/span&gt;&lt;span&gt;10&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      if&lt;/span&gt;&lt;span&gt; (left + tooltipRect.width &amp;gt; window.innerWidth - 10)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                          left&lt;/span&gt;&lt;span&gt; = window&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;innerWidth &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; tooltipRect&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;width &lt;/span&gt;&lt;span&gt;-&lt;/span&gt;&lt;span&gt; 10&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      if&lt;/span&gt;&lt;span&gt; (top &amp;lt; 10)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                          top&lt;/span&gt;&lt;span&gt; = targetRect&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;bottom &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; 10&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      tooltip.style.left&lt;/span&gt;&lt;span&gt; = left &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &apos;px&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      tooltip.style.top&lt;/span&gt;&lt;span&gt; = top &lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt; &apos;px&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      tooltip.classList.add(&apos;show&apos;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                      console.log(&apos;显示提示框:&apos;, tipText, &apos;位置:&apos;, left, top);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          }&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          heroGroup&lt;/span&gt;&lt;span&gt;.addEventListener&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;mouseout&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;function&lt;/span&gt;&lt;span&gt; (e)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              if&lt;/span&gt;&lt;span&gt; (e.target.classList.contains(&apos;hero-group-item&apos;))&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  const&lt;/span&gt;&lt;span&gt; allItems&lt;/span&gt;&lt;span&gt; = document&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;querySelectorAll&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;.hero-group-item&apos;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  // 恢复所有头像&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  allItems.forEach(item =&amp;gt; item.classList.remove(&apos;dimmed&apos;));&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  // 隐藏提示框&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;                  tooltip.classList.remove(&apos;show&apos;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;              }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          }&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;          console&lt;/span&gt;&lt;span&gt;.log&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;英雄头像事件委托初始化完成&apos;&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      // 使用多种方式确保执行&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      document&lt;/span&gt;&lt;span&gt;.addEventListener&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;DOMContentLoaded&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;initEventDelegation&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      window&lt;/span&gt;&lt;span&gt;.addEventListener&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;load&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;initEventDelegation&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;      document&lt;/span&gt;&lt;span&gt;.addEventListener&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&apos;pjax:complete&apos;&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;initEventDelegation&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;如果你不知道格式，可以使用快捷键来格式化代码。&lt;/p&gt;
&lt;p&gt;打开第二个文件：博客根目录/themes/anzhiyu/source/css/_page/about.styl
在文件最下方，添加如下代码：&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;author-content-item&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;game-yuanshen&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  position&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; relative&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  overflow&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; hidden&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; /* 保持 hidden 确保圆角裁剪 */&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;author-content-item&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;game-yuanshen&lt;/span&gt;&lt;span&gt; .&lt;/span&gt;&lt;span&gt;card-content&lt;/span&gt;&lt;span&gt; .&lt;/span&gt;&lt;span&gt;hero-group&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  position&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; absolute&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  bottom&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 20&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  left&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 40&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  display&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; flex&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  align-items&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; center&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  z-index&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 3&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;hero-group-item&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  width&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 40&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  height&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 40&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  border-radius&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 50&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  border&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt; solid &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--anzhiyu-main&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  object-fit&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; cover&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  position&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; relative&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  z-index&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  transition&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; z-index &lt;/span&gt;&lt;span&gt;0.2&lt;/span&gt;&lt;span&gt;s&lt;/span&gt;&lt;span&gt;, transform &lt;/span&gt;&lt;span&gt;0.2&lt;/span&gt;&lt;span&gt;s&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  cursor&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; pointer&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;hero-group-item&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;nth-child&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n+2&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  margin-left&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; -10&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; /* 调整这个值控制重叠程度 */&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;hero-group-item&lt;/span&gt;&lt;span&gt; img&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  width&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 100&lt;/span&gt;&lt;span&gt;% !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  height&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 100&lt;/span&gt;&lt;span&gt;% !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  object-fit&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; cover&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;hero-group-item&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;hover&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  transform&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; scale&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1.1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  z-index&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 10&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;/* 英雄提示框样式 */&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;/* 提示框样式 - 使用固定定位 */&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;hero-tooltip&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  position&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; fixed&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  background&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; rgba&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0.9&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  color&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; white&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  padding&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 8&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt; 12&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  border-radius&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 6&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  font-size&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 12&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  white-space&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; nowrap&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  opacity&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  visibility&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; hidden&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  transition&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; all &lt;/span&gt;&lt;span&gt;0.3&lt;/span&gt;&lt;span&gt;s&lt;/span&gt;&lt;span&gt; ease&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  z-index&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 10000&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  pointer-events&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; none&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  box-shadow&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt; 4&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt; 12&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt; rgba&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0.3&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  font-weight&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 500&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  max-width&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 200&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  text-align&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; center&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  /* 添加小箭头 */&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  &amp;amp;&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span&gt;after&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    content&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; &apos;&apos;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    position&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; absolute&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    top&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 100&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    left&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 50&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    transform&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; translateX&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;-50&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    border&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 5&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt; solid transparent&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;    border-top-color&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; rgba&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0.9&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  }&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;hero-tooltip&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;show&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  opacity&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  visibility&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; visible&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;/* 英雄头像基础样式 */&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;hero-group-item&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  width&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 40&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  height&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 40&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  border-radius&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 50&lt;/span&gt;&lt;span&gt;%&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  border&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt; solid &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--anzhiyu-main&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  object-fit&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; cover&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  position&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; relative&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  z-index&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  transition&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; all &lt;/span&gt;&lt;span&gt;0.3&lt;/span&gt;&lt;span&gt;s&lt;/span&gt;&lt;span&gt; ease&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  cursor&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; pointer&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;/* 重叠效果 */&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;hero-group-item&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;nth-child&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;n+2&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  margin-left&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; -10&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;/* 悬停效果 */&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;hero-group-item&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;hover&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  z-index&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 10&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  transform&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; scale&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1.1&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;/* 变暗效果 */&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;hero-group-item&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;dimmed&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  opacity&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 0.3&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;这个样式是头像之间有一些重叠效果，因为我的喜欢玩的英雄很多（嘿嘿）。&lt;/p&gt;
&lt;p&gt;你可以根据注释来针对你的喜好进行修改&lt;/p&gt;
&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;/* 英雄头像样式 */&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;author-content-item&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;game-yuanshen&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  position&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; relative&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  overflow&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; hidden&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;span&gt; /* 保持 hidden 确保圆角裁剪 */&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;author-content-item&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;game-yuanshen&lt;/span&gt;&lt;span&gt; .&lt;/span&gt;&lt;span&gt;card-content&lt;/span&gt;&lt;span&gt; .&lt;/span&gt;&lt;span&gt;hero-group&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  position&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; absolute&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  bottom&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 20&lt;/span&gt;&lt;span&gt;px !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  left&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 40&lt;/span&gt;&lt;span&gt;px !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  display&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; flex&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  gap&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 8&lt;/span&gt;&lt;span&gt;px !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  z-index&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 3&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;hero-group-item&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  width&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 40&lt;/span&gt;&lt;span&gt;px !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  height&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 40&lt;/span&gt;&lt;span&gt;px !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  border-radius&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 50&lt;/span&gt;&lt;span&gt;% !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  border&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt; solid &lt;/span&gt;&lt;span&gt;var&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;--anzhiyu-main&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  overflow&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; hidden&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  cursor&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; pointer&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  transition&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; all &lt;/span&gt;&lt;span&gt;0.3&lt;/span&gt;&lt;span&gt;s&lt;/span&gt;&lt;span&gt; ease&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;hero-group-item&lt;/span&gt;&lt;span&gt; img&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  width&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 100&lt;/span&gt;&lt;span&gt;% !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  height&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 100&lt;/span&gt;&lt;span&gt;% !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  object-fit&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; cover&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;hero-group-item&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt;hover&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  transform&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; scale&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1.1&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  z-index&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 10&lt;/span&gt;&lt;span&gt; !important&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;/* 英雄提示框样式 */&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;hero-tooltip&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  position&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; absolute&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  opacity&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  pointer-events&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; none&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  background&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; rgba&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0.8&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  color&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; #&lt;/span&gt;&lt;span&gt;fff&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  padding&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 6&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt; 12&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  border-radius&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 8&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  z-index&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 10000&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  font-size&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 14&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  box-shadow&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 0&lt;/span&gt;&lt;span&gt; 2&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt; 8&lt;/span&gt;&lt;span&gt;px&lt;/span&gt;&lt;span&gt; rgba&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;0.5&lt;/span&gt;&lt;span&gt;);&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  transition&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; opacity &lt;/span&gt;&lt;span&gt;0.2&lt;/span&gt;&lt;span&gt;s&lt;/span&gt;&lt;span&gt; ease&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  white-space&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; nowrap&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;hero-tooltip&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;show&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  opacity&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 1&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;hero-group-item&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;span&gt;dimmed&lt;/span&gt;&lt;span&gt; {&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  opacity&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; 0.5&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;  transition&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;span&gt; opacity &lt;/span&gt;&lt;span&gt;0.3&lt;/span&gt;&lt;span&gt;s&lt;/span&gt;&lt;span&gt; ease&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;然后一键三连即可查看效果啦。&lt;/p&gt;</content:encoded><category>category:学习笔记</category><category>category:美化</category><category>tag:博客美化</category><category>tag:hexo</category><category>tag:AnZhiYu</category></item><item><title>lc-3 处理器的指令格式表</title><link>https://www.weisifengbuxi.top/post/37ed3dc9</link><guid isPermaLink="false">37ed3dc9</guid><description>学期末尤其繁忙，不是考试就是小组作业，终于有时间写出这篇文章。话不多说，让我们开始吧 在介绍LC 3 处理器前，我们需要先回顾指令集体系结构（Instruction Set Architecture, ISA），其作为计算机系统中软硬件交互的核心界面，定义了处理器可执行指令的集合、寄存器组织结构、内</description><pubDate>Wed, 01 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;学期末尤其繁忙，不是考试就是小组作业，终于有时间写出这篇文章。话不多说，让我们开始吧&lt;/p&gt;
&lt;p&gt;在介绍 LC-3 处理器前，我们需要先回顾指令集体系结构（Instruction Set Architecture, ISA），其作为计算机系统中软硬件交互的核心界面，定义了处理器可执行指令的集合、寄存器组织结构、内存访问方式以及中断处理机制等基础硬件特性。&lt;/p&gt;
&lt;h2&gt;LC3 简介&lt;a href=&quot;#lc3-简介&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;LC-3 有 16 条指令，每条指令有 16 个字符，也就意味着它有&lt;span&gt;&lt;span&gt;2162^{16}&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;16&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;个地址空间，它还有 8 个寄存器（Register）。每个寄存器以 3 位二进制字符进行编号。&lt;/p&gt;
&lt;p&gt;以下是这 16 条指令，以 15 到 12 位不同的操作符进行区分，此外操作符 1101 的指令并没有使用，所以其实只有 15 条指令
&lt;/p&gt;&lt;figure&gt;&lt;img src=&quot;https://images.weserv.nl/?url=https://cdn.jsdelivr.net/gh/Weisifengbuxi/tuchuang@main/img/fengmian12.1&quot; alt=&quot;fengmian12.1&quot; loading=&quot;lazy&quot; /&gt;&lt;figcaption&gt;fengmian12.1&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;
&lt;div&gt;
LC-3 指令格式表
&lt;/div&gt;
&lt;h2&gt;操作指令&lt;a href=&quot;#操作指令&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;LC-3 有三种操作指令：ADD, AND, NOT&lt;/p&gt;
&lt;p&gt;ADD 和 AND 需要两个操作数，NOT 只需要一个源操作数。下面这条操作指令将 R5 寄存器中的值进行 NOT 运算，然后存入 R3 寄存器。第 5 到第 0 位是未使用的位，以 1 进行填充。&lt;/p&gt;
&lt;p&gt;DR 代表目标寄存器（Destination Register），是将操作结果存储到该寄存器中，SR 代表源寄存器（Source Register）&lt;/p&gt;
&lt;h3&gt;ADD 指令&lt;a href=&quot;#add-指令&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;ADD 指令的操作码为 &lt;code&gt;0001&lt;/code&gt;，它将两个操作数相加，结果存入目标寄存器 DR。ADD 支持两种寻址模式，由第 5 位决定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;寄存器模式&lt;/strong&gt;（bit[5] = 0）：两个源操作数均来自寄存器。bit[2&lt;div&gt;&lt;/div&gt;] 指定 SR2，bit[8&lt;div&gt;&lt;/div&gt;] 指定 SR1，bit[4&lt;div&gt;&lt;/div&gt;] 固定填充 &lt;code&gt;00&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;立即数模式&lt;/strong&gt;（bit[5] = 1）：第二个操作数为 5 位有符号立即数（imm5），需要先进行符号扩展至 16 位后再与 SR1 相加。&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;寄存器模式:  0001  DR  SR1  0  00  SR2&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;立即数模式:  0001  DR  SR1  1  imm5&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;举个例子&lt;/strong&gt;：&lt;code&gt;0001 011 010 1 00101&lt;/code&gt; 表示 R2 = R2 + 5。将 R2（SR1，也是 DR）与符号扩展后的立即数 5 相加，结果存回 R2。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;ADD 指令会根据计算结果自动更新条件码（Condition Code, CC）：结果为正则 N=0 Z=0 P=1，结果为负则 N=1 Z=0 P=0，结果为零则 N=0 Z=1 P=0。&lt;/p&gt;
&lt;h3&gt;AND 指令&lt;a href=&quot;#and-指令&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;AND 指令的操作码为 &lt;code&gt;0101&lt;/code&gt;，与 ADD 结构完全一致，同样支持两种寻址模式，区别仅在于执行按位与（bitwise AND）而非加法：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;寄存器模式:  0101  DR  SR1  0  00  SR2&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;立即数模式:  0101  DR  SR1  1  imm5&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;同样会根据结果更新条件码。立即数模式常用于&lt;strong&gt;位掩码&lt;/strong&gt;操作，例如 &lt;code&gt;0101 011 010 1 00011&lt;/code&gt; 表示 R2 = R2 AND 3，可用来提取 R2 的低 2 位。&lt;/p&gt;
&lt;h3&gt;NOT 指令&lt;a href=&quot;#not-指令&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;NOT 指令的操作码为 &lt;code&gt;1001&lt;/code&gt;，它是唯一一条只有一个源操作数的操作指令。对 SR 的值按位取反后存入 DR，低 6 位以 &lt;code&gt;1&lt;/code&gt; 填充：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;NOT:  1001  DR  SR  111111&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;举个例子&lt;/strong&gt;：&lt;code&gt;1001 011 101 111111&lt;/code&gt; 表示 R3 = NOT(R5)，对 R5 按位取反后存入 R3。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;NOT 同样会根据结果更新条件码。利用 NOT 和 ADD 组合，可以实现减法操作：先对减数取反，再加 1（二进制补码），然后与被减数相加。&lt;/p&gt;
&lt;h2&gt;数据搬移指令&lt;a href=&quot;#数据搬移指令&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;数据搬移指令负责在&lt;strong&gt;寄存器&lt;/strong&gt;和&lt;strong&gt;内存&lt;/strong&gt;之间传输数据，是 LC-3 中指令数量最多的一类，共 7 条。根据寻址方式的不同，可分为三类：&lt;strong&gt;PC 相对寻址&lt;/strong&gt;（LD、ST、LEA、LDI、STI）、&lt;strong&gt;基址偏移寻址&lt;/strong&gt;（LDR、STR）和&lt;strong&gt;立即数加载&lt;/strong&gt;（LEA 严格来说加载的是地址而非内存数据）。&lt;/p&gt;
&lt;h3&gt;LD 指令（Load）&lt;a href=&quot;#ld-指令load&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;操作码 &lt;code&gt;0010&lt;/code&gt;，将内存中某个地址的值加载到目标寄存器 DR。地址计算方式：将 9 位有符号偏移量（PCoffset9）符号扩展至 16 位，然后与&lt;strong&gt;递增后的 PC&lt;/strong&gt; 相加得到目标地址。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;LD:  0010  DR  PCoffset9&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;举个例子&lt;/strong&gt;：&lt;code&gt;0010 011 000000101&lt;/code&gt; 表示 R3 = M[PC + 5]，将 PC+5 地址处的值加载到 R3。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;ST 指令（Store）&lt;a href=&quot;#st-指令store&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;操作码 &lt;code&gt;0011&lt;/code&gt;，将源寄存器 SR 的值存储到内存中。地址计算方式与 LD 完全相同——将 PCoffset9 符号扩展后与递增后的 PC 相加。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;ST:  0011  SR  PCoffset9&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：LD 和 ST 的寻址范围是 PC ± 256，这是因为 9 位有符号偏移量的范围是 -256 到 +255。&lt;/p&gt;
&lt;h3&gt;LDR 指令（Load Register）&lt;a href=&quot;#ldr-指令load-register&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;操作码 &lt;code&gt;0110&lt;/code&gt;，使用&lt;strong&gt;基址加偏移&lt;/strong&gt;的方式计算地址：将 6 位有符号偏移量（offset6）符号扩展至 16 位，与基址寄存器 BaseR 的值相加。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;LDR:  0110  DR  BaseR  offset6&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;举个例子&lt;/strong&gt;：&lt;code&gt;0110 011 010 000110&lt;/code&gt; 表示 R3 = M[R2 + 6]，以 R2 为基址、偏移 6 来访问内存。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;对比 LD&lt;/strong&gt;：LD 以 PC 为基址（PC 相对寻址），适合访问全局变量和静态数据；LDR 以任意寄存器为基址，灵活度更高，适合访问数组元素和结构体成员。&lt;/p&gt;
&lt;h3&gt;STR 指令（Store Register）&lt;a href=&quot;#str-指令store-register&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;操作码 &lt;code&gt;0111&lt;/code&gt;，与 LDR 结构一致，区别在于将 SR 的值&lt;strong&gt;写入&lt;/strong&gt;内存而非读取：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;STR:  0111  SR  BaseR  offset6&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;LDI 指令（Load Indirect）&lt;a href=&quot;#ldi-指令load-indirect&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;操作码 &lt;code&gt;1010&lt;/code&gt;，&lt;strong&gt;间接寻址&lt;/strong&gt;：先以 PC 相对寻址方式找到一个内存地址，再以该地址存储的值为最终地址，去读取数据加载到 DR。用 C 语言的指针概念来理解，就是&lt;strong&gt;双重解引用&lt;/strong&gt;。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;LDI:  1010  DR  PCoffset9&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;举个例子&lt;/strong&gt;：&lt;code&gt;1010 011 000001010&lt;/code&gt;，先计算 PC+10 处地址 A，再读取 M[A] 的值为地址 B，最终 R3 = M[B]。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;STI 指令（Store Indirect）&lt;a href=&quot;#sti-指令store-indirect&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;操作码 &lt;code&gt;1011&lt;/code&gt;，与 LDI 结构一致，区别在于将 SR 的值存储到通过间接寻址得到的目标地址中：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;STI:  1011  SR  PCoffset9&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;LEA 指令（Load Effective Address）&lt;a href=&quot;#lea-指令load-effective-address&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;操作码 &lt;code&gt;1110&lt;/code&gt;，这条指令&lt;strong&gt;不访问内存&lt;/strong&gt;，而是直接将计算出的地址（而非地址中的内容）加载到 DR。地址计算方式与 LD 相同：PCoffset9 符号扩展后与递增后的 PC 相加。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;LEA:  1110  DR  PCoffset9&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;举个例子&lt;/strong&gt;：&lt;code&gt;1110 011 000000101&lt;/code&gt; 表示 R3 = PC + 5。注意：R3 得到的是&lt;strong&gt;地址值&lt;/strong&gt; PC+5，而非 M[PC+5] 的内容。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;LEA 常用于获取某个数据区域或字符串的&lt;strong&gt;起始地址&lt;/strong&gt;，然后配合 LDR/STR 遍历访问。&lt;/p&gt;





















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;指令&lt;/th&gt;&lt;th&gt;操作码&lt;/th&gt;&lt;th&gt;格式&lt;/th&gt;&lt;th&gt;寻址方式&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;LD&lt;/td&gt;&lt;td&gt;&lt;code&gt;0010&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;0010 DR PCoffset9&lt;/code&gt;&lt;/td&gt;&lt;td&gt;PC 相对&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ST&lt;/td&gt;&lt;td&gt;&lt;code&gt;0011&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;0011 SR PCoffset9&lt;/code&gt;&lt;/td&gt;&lt;td&gt;PC 相对&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;LDR&lt;/td&gt;&lt;td&gt;&lt;code&gt;0110&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;0110 DR BaseR offset6&lt;/code&gt;&lt;/td&gt;&lt;td&gt;基址偏移&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;STR&lt;/td&gt;&lt;td&gt;&lt;code&gt;0111&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;0111 SR BaseR offset6&lt;/code&gt;&lt;/td&gt;&lt;td&gt;基址偏移&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;LDI&lt;/td&gt;&lt;td&gt;&lt;code&gt;1010&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;1010 DR PCoffset9&lt;/code&gt;&lt;/td&gt;&lt;td&gt;间接&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;STI&lt;/td&gt;&lt;td&gt;&lt;code&gt;1011&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;1011 SR PCoffset9&lt;/code&gt;&lt;/td&gt;&lt;td&gt;间接&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;LEA&lt;/td&gt;&lt;td&gt;&lt;code&gt;1110&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;1110 DR PCoffset9&lt;/code&gt;&lt;/td&gt;&lt;td&gt;立即数（地址）&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;控制指令&lt;a href=&quot;#控制指令&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;控制指令负责改变程序的执行流程，包括条件分支、无条件跳转、子程序调用和系统陷阱等。&lt;/p&gt;
&lt;h3&gt;BR 指令（Branch）&lt;a href=&quot;#br-指令branch&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;操作码 &lt;code&gt;0000&lt;/code&gt;，根据条件码 N、Z、P 的状态决定是否跳转。bit[11&lt;/p&gt;&lt;div&gt;&lt;/div&gt;] 分别为 n、z、p 标志位，当对应的条件码为 1 时，该条件被&quot;选中&quot;；只有被选中且对应的 CC 位也为 1 时，跳转才会发生。&lt;p&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;BR:  0000  n  z  p  PCoffset9&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;


















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;n z p&lt;/th&gt;&lt;th&gt;助记符&lt;/th&gt;&lt;th&gt;跳转条件&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;0 0 0&lt;/td&gt;&lt;td&gt;—&lt;/td&gt;&lt;td&gt;永不跳转（无操作）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1 1 1&lt;/td&gt;&lt;td&gt;BR&lt;/td&gt;&lt;td&gt;无条件跳转&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1 0 0&lt;/td&gt;&lt;td&gt;BRn&lt;/td&gt;&lt;td&gt;N=1 时跳转（结果为负）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;0 1 0&lt;/td&gt;&lt;td&gt;BRz&lt;/td&gt;&lt;td&gt;Z=1 时跳转（结果为零）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;0 0 1&lt;/td&gt;&lt;td&gt;BRp&lt;/td&gt;&lt;td&gt;P=1 时跳转（结果为正）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1 1 0&lt;/td&gt;&lt;td&gt;BRnz&lt;/td&gt;&lt;td&gt;N=1 或 Z=1 时跳转&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;0 1 1&lt;/td&gt;&lt;td&gt;BRzp&lt;/td&gt;&lt;td&gt;Z=1 或 P=1 时跳转&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1 0 1&lt;/td&gt;&lt;td&gt;BRnp&lt;/td&gt;&lt;td&gt;N=1 或 P=1 时跳转&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;若跳转发生，目标地址 = PC + sext(PCoffset9)；若跳转不发生，程序顺序执行下一条指令。汇编器会将条件组合自动翻译为对应的助记符。&lt;/p&gt;
&lt;h3&gt;JMP 指令（Jump）&lt;a href=&quot;#jmp-指令jump&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;操作码 &lt;code&gt;1100&lt;/code&gt;，无条件跳转到基址寄存器 BaseR 中存储的地址。bit[8&lt;/p&gt;&lt;div&gt;&lt;/div&gt;] 指定 BaseR，其余未使用位以 &lt;code&gt;0&lt;/code&gt; 填充。&lt;p&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;JMP:  1100  000  BaseR  000000&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;举个例子&lt;/strong&gt;：&lt;code&gt;1100 000 010 000000&lt;/code&gt; 表示 PC = R2，程序跳转到 R2 中存储的地址继续执行。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;对比 BR&lt;/strong&gt;：BR 的跳转目标是相对于 PC 的偏移且受条件码约束，而 JMP 的跳转目标来自寄存器，可以跳转到任意地址，更加灵活。&lt;/p&gt;
&lt;h3&gt;JSR 与 JSRR 指令（Jump to Subroutine）&lt;a href=&quot;#jsr-与-jsrr-指令jump-to-subroutine&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;操作码 &lt;code&gt;0100&lt;/code&gt;，用于&lt;strong&gt;子程序调用&lt;/strong&gt;。在执行跳转前，JSR/JSRR 会自动将&lt;strong&gt;返回地址&lt;/strong&gt;（即当前 PC 的值，指向下一条指令）保存到 R7 寄存器中，以便子程序执行完毕后通过 RET 返回。&lt;/p&gt;
&lt;p&gt;JSR 和 JSRR 由同一个操作码 &lt;code&gt;0100&lt;/code&gt; 实现，通过 bit[11] 区分：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JSR&lt;/strong&gt;（bit[11] = 1）：使用 11 位 PC 相对偏移量，跳转范围为 PC ± 1024。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JSRR&lt;/strong&gt;（bit[11] = 0）：使用基址寄存器 BaseR 指定目标地址，bit[8&lt;div&gt;&lt;/div&gt;] 指定寄存器，其余位填充 &lt;code&gt;0&lt;/code&gt;。&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;JSR:   0100  1  PCoffset11&lt;/span&gt;&lt;/span&gt;
&lt;span&gt;&lt;span&gt;JSRR:  0100  0  00  BaseR  000000&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;举个例子&lt;/strong&gt;：&lt;code&gt;0100 1 00000001001&lt;/code&gt; 先将当前 PC 保存到 R7，再跳转到 PC + 9。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;注意&lt;/strong&gt;：JSRR 的基址寄存器同样可以是 R7，但由于返回地址已经被写入 R7，若再以 R7 作为 BaseR 去跳转，会导致程序跳转回返回地址处（即自己），这种用法并不常见。&lt;/p&gt;
&lt;h3&gt;RET 指令（Return）&lt;a href=&quot;#ret-指令return&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;操作码 &lt;code&gt;1100&lt;/code&gt;。实际上，RET 是 &lt;strong&gt;JMP R7&lt;/strong&gt; 的别名——将 R7（保存了返回地址）的值加载到 PC，从而从子程序返回。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;RET:  1100  000  111  000000&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;为什么是 R7？因为 JSR/JSRR 在跳转前已经把返回地址写入了 R7，所以 RET 只需一句 &lt;code&gt;JMP R7&lt;/code&gt; 就能回到调用点。在 LC-3 汇编器中，&lt;code&gt;RET&lt;/code&gt; 和 &lt;code&gt;JMP R7&lt;/code&gt; 是完全等价的。&lt;/p&gt;
&lt;h3&gt;RTI 指令（Return from Interrupt）&lt;a href=&quot;#rti-指令return-from-interrupt&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;操作码 &lt;code&gt;1000&lt;/code&gt;，用于从中断服务程序返回。RTI 的行为较为特殊——它不会修改 PC 的值；当中断被触发时，处理器会将当前 PC 值压入系统栈，RTI 只是向处理器发出&quot;中断处理完毕&quot;的信号，由硬件恢复现场。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;RTI:  1000  000000000000&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;在 LC-3 教学模型中，RTI 的具体行为取决于模拟器的实现，很多情况下它被简化处理。如果你用的是 LC-3 模拟器，建议查阅其文档确认 RTI 的精确行为。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;TRAP 指令&lt;a href=&quot;#trap-指令&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;操作码 &lt;code&gt;1111&lt;/code&gt;，高 8 位为 &lt;code&gt;11110000&lt;/code&gt;，低 8 位为 trapvect8，用于调用操作系统的服务例程。TRAP 与 JSR 类似：先将 PC 保存到 R7，然后跳转到由 trapvect8 指定的服务例程地址。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;span&gt;&lt;span&gt;TRAP:  1111  0000  trapvect8&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;常见的 TRAP 服务例程（LC-3 操作系统内置）：&lt;/p&gt;








































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;trapvect8&lt;/th&gt;&lt;th&gt;助记符&lt;/th&gt;&lt;th&gt;功能&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;x20&lt;/code&gt;&lt;/td&gt;&lt;td&gt;GETC&lt;/td&gt;&lt;td&gt;从键盘读取一个字符（不回显），存入 R0[7&lt;div&gt;&lt;/div&gt;]&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;x21&lt;/code&gt;&lt;/td&gt;&lt;td&gt;OUT&lt;/td&gt;&lt;td&gt;输出 R0[7&lt;div&gt;&lt;/div&gt;] 中的字符到屏幕&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;x22&lt;/code&gt;&lt;/td&gt;&lt;td&gt;PUTS&lt;/td&gt;&lt;td&gt;输出以 R0 为起始地址的字符串（以 NUL 结尾）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;x23&lt;/code&gt;&lt;/td&gt;&lt;td&gt;IN&lt;/td&gt;&lt;td&gt;提示输入一个字符，回显后存入 R0[7&lt;div&gt;&lt;/div&gt;]&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;x24&lt;/code&gt;&lt;/td&gt;&lt;td&gt;PUTSP&lt;/td&gt;&lt;td&gt;输出以 R0 为起始地址的打包字符串&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;code&gt;x25&lt;/code&gt;&lt;/td&gt;&lt;td&gt;HALT&lt;/td&gt;&lt;td&gt;停止程序执行，打印停机信息&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;举个例子&lt;/strong&gt;：&lt;code&gt;1111 0000 00100001&lt;/code&gt;（即 TRAP x21），将 R0[7&lt;/p&gt;&lt;div&gt;&lt;/div&gt;] 中的字符输出到显示器上。&lt;p&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;TRAP 是用户程序与 LC-3 操作系统之间的桥梁。你的程序不需要知道 &lt;code&gt;OUT&lt;/code&gt; 服务例程具体放在内存的哪个位置，只需要通过 TRAP 指令加上对应的 trapvect8 即可调用。&lt;/p&gt;





















































&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;指令&lt;/th&gt;&lt;th&gt;操作码&lt;/th&gt;&lt;th&gt;格式&lt;/th&gt;&lt;th&gt;说明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;BR&lt;/td&gt;&lt;td&gt;&lt;code&gt;0000&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;0000 n z p PCoffset9&lt;/code&gt;&lt;/td&gt;&lt;td&gt;条件分支&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;JMP&lt;/td&gt;&lt;td&gt;&lt;code&gt;1100&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;1100 000 BaseR 000000&lt;/code&gt;&lt;/td&gt;&lt;td&gt;无条件跳转&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;JSR&lt;/td&gt;&lt;td&gt;&lt;code&gt;0100&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;0100 1 PCoffset11&lt;/code&gt;&lt;/td&gt;&lt;td&gt;子程序调用（PC 相对）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;JSRR&lt;/td&gt;&lt;td&gt;&lt;code&gt;0100&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;0100 0 00 BaseR 000000&lt;/code&gt;&lt;/td&gt;&lt;td&gt;子程序调用（寄存器）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;RET&lt;/td&gt;&lt;td&gt;&lt;code&gt;1100&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;1100 000 111 000000&lt;/code&gt;&lt;/td&gt;&lt;td&gt;从子程序返回（JMP R7）&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;RTI&lt;/td&gt;&lt;td&gt;&lt;code&gt;1000&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;1000 000000000000&lt;/code&gt;&lt;/td&gt;&lt;td&gt;从中断返回&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;TRAP&lt;/td&gt;&lt;td&gt;&lt;code&gt;1111&lt;/code&gt;&lt;/td&gt;&lt;td&gt;&lt;code&gt;1111 0000 trapvect8&lt;/code&gt;&lt;/td&gt;&lt;td&gt;系统服务调用&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2&gt;总结&lt;a href=&quot;#总结&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;LC-3 总共定义了 16 条指令（操作码 &lt;code&gt;1101&lt;/code&gt; 保留未使用，实际使用 15 条），按照功能可以分成三大类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;操作指令&lt;/strong&gt;（ADD、AND、NOT）：执行算术和逻辑运算，结果存入寄存器，同时更新条件码。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据搬移指令&lt;/strong&gt;（LD、ST、LDR、STR、LDI、STI、LEA）：在寄存器和内存之间搬运数据，不同指令对应不同的寻址方式——PC 相对、基址偏移或间接寻址。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;控制指令&lt;/strong&gt;（BR、JMP、JSR/JSRR、RET、RTI、TRAP）：控制程序执行流程，实现条件分支、跳转、子程序调用和系统交互。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;理解这些指令的二进制格式，是读懂 LC-3 机器码、手写汇编程序以及后续学习&lt;strong&gt;微架构设计&lt;/strong&gt;和&lt;strong&gt;LC-3 数据通路&lt;/strong&gt;的基础。建议对照指令格式表，多在 LC-3 模拟器上动手编写和调试几段程序，熟悉后你会发现这 16 条指令虽然简单，但已经能完成相当多有趣的事情了。&lt;/p&gt;
&lt;div&gt;
&lt;p&gt;在学校压力还是很大的，各种事情使我脱不开身，而我又很喜欢游戏，这使我很少更新文章 QAQ，以后尽量多抽时间写点东西&lt;/p&gt;
&lt;/div&gt;</content:encoded><category>category:学习笔记</category><category>tag:LC-3</category><category>tag:指令格式</category></item></channel></rss>