考研数据结构编程:从零写代码的工程实现与调试技巧
1. 先搞清楚“从零写代码”到底要解决什么问题看到“考研数据结构编程题”和“从零写代码”很多同学第一反应是找一堆算法题来刷。但如果你真这么干大概率会卡在第一步题目看懂了也知道大概思路但就是写不出能跑通的代码。这不是算法问题而是工程实现能力的断层。这个主题的核心不是教你背算法模板而是解决一个更实际的问题如何把教材上的伪代码、脑海里的解题思路转化成能在考场上稳定运行、没有语法错误、能处理边界情况的C/C代码。它适合两类人一是跨考、代码基础薄弱的同学二是虽然学过C语言但一遇到链表、树、图的具体操作就手忙脚乱调试半天找不到bug的同学。最关键的价值在于建立“思路到代码”的肌肉记忆。很多同学学数据结构停留在“理解”层面知道快排是分治知道二叉树可以递归遍历。但一到写代码递归函数参数怎么传指针操作哪里会越界动态分配的内存怎么释放这些细节才是408考试和机试中真正的拦路虎。所谓的“录播”和“从零写”就是要把这个从思考到落笔的完整过程像搭积木一样拆解给你看每一步为什么这么写常见的坑在哪里。2. 环境准备别在工具上浪费时间和制造障碍动手之前先把环境弄简单、弄稳定。考研复习时间宝贵不要在配置环境、解决编译错误上消耗斗志。2.1 编译器与IDE选择越简单越好对于数据结构练习你不需要复杂的项目工程管理功能。一个轻量、启动快、能清晰报错的工具就是最好的。Windows用户直接使用Dev-C或Code::Blocks。它们安装简单自带MinGW编译器创建单个.cpp文件就能编译运行非常适合练习算法片段。不推荐初学者一上来就用Visual Studio它过于庞大且一些项目配置问题会分散你的注意力。macOS/Linux用户使用终端 文本编辑器如VSCode, Sublime Textg编译器。这是最接近考试机试环境的方式。在终端里用g -o program program.cpp编译用./program运行能让你最直接地看到编译错误和运行时输出。注意不要纠结于哪个工具“更强大”。你的目标是快速验证代码逻辑工具能稳定编译C11/14标准即可。把精力集中在代码本身。2.2 建立标准的代码练习结构混乱的文件管理会拖慢学习节奏。建议在本地建立一个清晰的目录DS_Code_Practice/ ├── 01_Linear_List/ # 线性表 │ ├── SeqList.cpp # 顺序表实现 │ ├── LinkList.cpp # 单链表实现 │ └── problems/ # 相关习题 ├── 02_Stack_Queue/ # 栈与队列 ├── 03_Tree/ # 树 ├── 04_Graph/ # 图 ├── 05_Search_Sort/ # 查找排序 └── utils/ # 通用工具函数 └── common.h # 如打印数组、生成随机数等每学完一个章节就在对应目录下创建你的代码文件。这样复习时能快速定位也便于管理不同版本的实现。2.3 核心依赖标准模板库STL的定位408考试中对于线性表、栈、队列等虽然要求掌握手写实现但强烈建议你在日常练习和思维构建时先使用C STL如vector,stack,queue来验证算法逻辑。原因有三降低入门门槛你可以先关注“如何用栈解决括号匹配问题”的算法思想而不是先花半小时调试一个手写栈的Push/Pop函数。提供正确参照STL的实现是标准且正确的。当你用自己的手写代码实现相同功能后可以用STL的结果进行对比测试快速定位bug。适应考试趋势越来越多的学校机试允许使用STL熟练运用它能极大提升编码效率。但切记手写实现的能力依然是根基。练习的最终阶段必须能脱离STL从零构建数据结构。3. 从零实现的关键步骤拆解以单链表为例“从零写”不是一蹴而就。我们以最经典也最容易出错的单链表为例拆解整个过程。我会把重点放在那些“一想就懂一写就错”的细节上。3.1 第一步定义结构与内存管理意识很多教材直接给出结构体定义但没讲清楚指针和内存的“主权”问题。// 链表节点定义 typedef struct LNode { int data; // 数据域 struct LNode *next; // 指针域 } LNode, *LinkList; // LNode是节点类型LinkList是指向节点的指针通常代表头指针 // 初始化一个空链表带头节点 LinkList InitList() { LinkList L (LNode *)malloc(sizeof(LNode)); // 创建头节点 if (L NULL) { // 内存分配失败检查这是一个好习惯。 printf(Memory allocation failed!\n); exit(EXIT_FAILURE); } L-next NULL; // 头节点指针域置空代表空链表 return L; }关键点解释LinkList本质是LNode*。我们约定用LinkList L表示一个链表的头指针指向头节点。带头节点这是一个非常重要的工程实践。头节点不存储数据它的存在使得对第一个数据节点的操作插入、删除与对其他节点的操作逻辑统一能减少边界判断降低出错率。考研题中明确要求不带头节点的情况除外否则建议一律使用带头节点链表进行练习。malloc与free必须成对出现。在InitList中分配就必须在链表不再使用时有对应的释放操作。3.2 第二步实现插入操作——指针操作的“时序图”头插法和尾插法是基础。错误往往发生在指针修改的顺序上。// 头插法在链表头部插入新节点 bool ListInsert_Head(LinkList L, int e) { LNode *s (LNode *)malloc(sizeof(LNode)); if (s NULL) return false; // 插入失败 s-data e; // 关键步骤顺序不能错 s-next L-next; // 新节点指向原第一个节点 L-next s; // 头节点指向新节点 return true; } // 按位序插入在第i个位置插入i从1开始 bool ListInsert(LinkList L, int i, int e) { if (i 1) return false; // 位序非法 LNode *p L; // p指向头节点位序0 int j 0; // 当前p指向的位序 while (p ! NULL j i - 1) { // 寻找第i-1个节点 p p-next; j; } if (p NULL) return false; // i值超过表长1 LNode *s (LNode *)malloc(sizeof(LNode)); if (s NULL) return false; s-data e; s-next p-next; // 先接后链 p-next s; // 再接前链 return true; }为什么顺序重要以按位序插入为例s-next p-next必须在p-next s之前。如果先执行p-next s那么原p-next指向的节点地址就丢失了链表从这里断开。在脑中或纸上画出插入前的指针状态然后分步修改是避免这类错误的最佳方法。3.3 第三步实现删除操作——内存泄漏的陷阱删除节点不仅要修改指针还要记得释放内存。// 按位序删除并返回被删除元素的值 bool ListDelete(LinkList L, int i, int *e) { if (i 1) return false; LNode *p L; int j 0; while (p ! NULL j i - 1) { // 找到第i-1个节点 p p-next; j; } if (p NULL || p-next NULL) return false; // 第i个节点不存在 LNode *q p-next; // q指向待删除节点 *e q-data; // 带回被删除元素的值 p-next q-next; // 将前驱节点指向待删除节点的后继 free(q); // 释放内存 return true; }最常见的坑忘记保存值题目要求返回被删元素的值必须在修改指针前用*e q-data保存。忘记释放内存free(q)这一步在算法题里可能不影响结果但这是严重的编程缺陷在机试或面试中会扣分。边界判断不全if (p NULL || p-next NULL)两个条件缺一不可。pNULL对应i远大于表长p-nextNULL对应i等于表长1即要删除一个不存在的“尾后”节点。3.4 第四步编写测试代码——验证你的实现写完一个函数就测试不要等全部写完。测试要覆盖正常、边界和异常情况。#include stdio.h #include stdlib.h // 此处粘贴上面的结构体定义和函数实现... // 打印链表 void PrintList(LinkList L) { LNode *p L-next; // 跳过头节点 while (p ! NULL) { printf(%d - , p-data); p p-next; } printf(NULL\n); } int main() { // 1. 初始化 LinkList L InitList(); printf(Initial list: ); PrintList(L); // 应输出 NULL // 2. 测试头插法 ListInsert_Head(L, 3); ListInsert_Head(L, 2); ListInsert_Head(L, 1); printf(After head insert (1,2,3): ); PrintList(L); // 应输出 1 - 2 - 3 - NULL // 3. 测试按位序插入 ListInsert(L, 4, 4); // 在第四位插入4 printf(Insert 4 at position 4: ); PrintList(L); // 应输出 1 - 2 - 3 - 4 - NULL // 4. 测试按位序删除 int deletedVal; if (ListDelete(L, 2, deletedVal)) { printf(Deleted value at position 2: %d\n, deletedVal); // 应输出 2 } printf(List after deletion: ); PrintList(L); // 应输出 1 - 3 - 4 - NULL // 5. 测试异常删除 if (!ListDelete(L, 10, deletedVal)) { // 位置10不存在 printf(Failed to delete at position 10 (as expected).\n); } // TODO: 释放整个链表内存重要 // ... (遍历链表逐个free) return 0; }通过这种小规模的、有针对性的测试你能立即确认每个函数的行为是否符合预期快速定位问题所在。4. 将模式应用到复杂结构二叉树与图掌握了链表的“从零实现”模式二叉树和图就可以依葫芦画瓢但各有其核心难点。4.1 二叉树递归与非递归的转换二叉树的定义和先序、中序、后序遍历的递归写法非常直观几乎是默写内容。真正的难点在于非递归遍历和层次遍历这要求你显式地使用栈Stack或队列Queue来模拟递归过程。// 二叉树节点定义 typedef struct BiTNode { char data; struct BiTNode *lchild, *rchild; } BiTNode, *BiTree; // 非递归中序遍历使用栈 void InOrderTraversal(BiTree T) { BiTNode *stack[100]; // 简易栈 int top -1; BiTNode *p T; while (p ! NULL || top ! -1) { if (p ! NULL) { // 一路向左将节点入栈 stack[top] p; p p-lchild; } else { // 左子树为空出栈访问转向右子树 p stack[top--]; visit(p); // 访问节点如打印 p p-rchild; } } }练习要点先写递归版理解访问节点的时机先序访问在左右递归之前中序在中间后序在之后。再写非递归版用栈手动记录“返回地址”。中序的非递归是经典模板务必掌握。层次遍历必须使用队列。模板是根节点入队当队不空时出队一个节点并访问然后将其左右孩子若非空入队。“从零写”在这里意味着你要先自己实现一个栈数组或链表和一个队列再用它们去完成遍历。这是对线性表知识的综合运用。4.2 图存储结构与基础算法的实现图的代码量通常更大关键在于选择正确的存储结构邻接矩阵 or 邻接表并清晰地实现BFS和DFS。// 邻接表存储 #define MAX_VERTEX_NUM 100 typedef struct ArcNode { // 边表节点 int adjvex; // 该边指向的顶点位置 struct ArcNode *nextarc; // 指向下一条边的指针 // int info; // 边权值 } ArcNode; typedef struct VNode { // 顶点表节点 char data; // 顶点信息 ArcNode *firstarc; // 指向第一条依附该顶点的边 } VNode, AdjList[MAX_VERTEX_NUM]; typedef struct { AdjList vertices; int vexnum, arcnum; // 顶点数和边数 } ALGraph; // DFS递归遍历以邻接表为例 bool visited[MAX_VERTEX_NUM]; // 访问标记数组 void DFS(ALGraph G, int v) { // 从顶点v出发深度优先遍历 visit(G.vertices[v]); // 访问顶点v visited[v] true; ArcNode *p G.vertices[v].firstarc; while (p ! NULL) { int w p-adjvex; if (!visited[w]) { DFS(G, w); } p p-nextarc; } }实现策略先搭框架正确定义ALGraph和ArcNode写好图的创建函数手动输入或从文件读入。实现遍历DFS的递归版本很简单非递归版本需要栈。BFS必须用队列。务必在遍历函数内部或外部初始化visited数组这是高频错误点。实现经典算法如Dijkstra最短路径、拓扑排序。这些算法的代码有固定结构核心在于理解其中“距离数组”、“入度数组”等辅助结构如何更新以及循环的终止条件。测试用小图用3-5个顶点的小图进行测试手动推导结果与程序输出对比。5. 从习题到实战刷题的正确姿势与调试技巧有了基础实现能力面对编程题时流程应该是审题 - 设计数据结构与算法 - 编写核心函数 - 构建完整可运行程序 - 测试与调试。5.1 审题与设计阶段不要急于编码。拿出一张纸或注释写下输入/输出格式明确函数接口。是独立程序main函数处理输入输出还是实现一个特定函数数据结构选择题目隐含了哪种结构是线性表、栈、队列、树还是图是否需要组合使用如用栈辅助二叉树遍历算法思路用自然语言或伪代码描述步骤。特别是边界条件表空、树空、图不连通、输入非法等情况如何处理复杂度预估心里要有个大概避免写出O(n²)的暴力解除非别无他法。5.2 编码与调试阶段编码时如果卡住了或者运行结果不对按以下顺序排查编译错误逐行阅读编译器报错。最常见的是语法错误分号、括号缺失变量未声明类型不匹配。解决一个再编译不要一次性改很多处。运行时错误崩溃指针问题这是数据结构题崩溃的罪魁祸首。检查指针是否为NULL就进行了-操作malloc后是否检查了分配成功free之后是否误用了指针数组越界访问数组时下标是否可能小于0或大于等于数组长度循环条件是否正确递归栈溢出递归深度是否过大递归终止条件是否一定能被满足逻辑错误结果不对使用调试器学习使用IDE的调试功能设置断点、单步执行、查看变量值。这是最强大的工具。“打印”大法在关键位置如函数入口、循环开始/结束、指针操作前后打印关键变量指针值、数组内容、节点数据。通过输出流来跟踪程序实际执行路径。小数据测试用最简单的、你知道答案的用例测试。例如链表题就用1个、2个、3个节点的链表测试插入删除。边界测试输入为空链表、空树、单个节点、已排序/逆序数据等特殊情况。对比STL如果你的算法可以用STL简化实现先用STL写一个版本得到正确结果再与你的手写版本对比输出。5.3 养成好的编码习惯这些习惯在考试时能帮你节省时间减少错误画图辅助对于链表、树、图的指针操作在草稿纸上画出操作前后的状态图。模块化函数将常用操作封装成函数如CreateNode,InsertNode,DeleteNode,PrintList。使main函数逻辑清晰。释放内存虽然考研笔试可能不扣分但养成malloc/free配对的习惯。写注释在复杂算法或易错点旁写上简要注释解释为什么这么做。6. 针对408的专项准备与时间规划408统考的数据结构编程题更侧重于算法思想的理解和简单实现通常不会要求编写特别冗长、工程化的代码。机试则可能要求完整的、可运行的程序。笔试编程题通常以伪代码、C语言代码片段形式出现考察你是否理解算法在特定数据结构上的操作。重点复习线性表的合并、逆转栈在表达式求值/递归中的应用队列层次遍历二叉树遍历及性质相关算法求高度、宽度、某类节点数图的遍历、最小生成树、最短路径的关键步骤排序算法的过程与稳定性分析。机试要求编写完整程序。除了掌握上述所有内容还要熟练处理标准输入输出scanf/printf,cin/cout注意题目中的时间与空间限制。复习时间线建议基础阶段2-3个月按照线性表、栈队列、树、图、查找排序的顺序逐个攻破。每个章节做到理解概念 - 手写基本操作代码 - 完成课后经典习题。此时“从零写代码”的目标是“写对”。强化阶段1-2个月开始刷历年真题和高质量模拟题中的编程题。目标从“写对”提升到“写快”和“写巧”。总结常见题型和套路比如链表常考逆转、找交点、判环二叉树常考遍历、重建、最近公共祖先图常考遍历、连通性、最短路径。冲刺阶段1个月进行限时模拟训练。找一些机试题或规定时间的编程练习模拟考场环境。目标是“稳定输出”确保在压力下也能清晰思考避免低级错误。同时回顾自己之前的错题和易错点。最后记住“从零写代码”的精髓不是背代码而是通过反复的、刻意的手工练习建立对数据结构的物理直觉和对指针、内存的精确控制力。一开始会慢会错这很正常。每调试通一个程序你对这个知识点的理解就深一层。坚持这个过程等到考场那天你会发现那些编程题不过是你平时练习过的套路的自然组合。

相关新闻

VSCode前端插件配置全攻略:从基础搭建到高效定制

VSCode前端插件配置全攻略:从基础搭建到高效定制

1. 项目概述:为什么前端开发者离不开VSCode插件?如果你是一名前端开发者,打开你的VSCode,侧边栏那个插件图标里,是不是已经塞满了各种奇奇怪怪的小玩意儿?从代码高亮到自动补全,从代码格式化到G…

2026/8/16 7:38:18 阅读更多 →
国内热门的造粒机厂家哪家好

国内热门的造粒机厂家哪家好

在塑料加工行业蓬勃发展的今天,造粒机作为不可或缺的设备,其性能和质量直接影响着生产效率和产品质量。对于众多创业者和采购商来说,选择一家靠谱的造粒机厂家至关重要。那么,国内热门的造粒机厂家哪家好呢?接下来&…

2026/8/16 7:38:18 阅读更多 →
万象生鲜系统:首衡集采集配消费者环保参与

万象生鲜系统:首衡集采集配消费者环保参与

万象生鲜系统是生鲜配送系统中的杰出代表,涵盖订单处理、采购管理、库存监控等功能模块。具有高度智能化、用户体验好等特点万象生鲜系统的实施,使得首衡集采与环保参与得以紧密结合,全面优化了供应链管理。系统通过引入绿色采购标准&#xf…

2026/8/16 7:38:18 阅读更多 →

最新新闻

Llama 工具调用翻车实录:描述越详细,准确率反而降 30%——我的技能模板救场方案

Llama 工具调用翻车实录:描述越详细,准确率反而降 30%——我的技能模板救场方案

Llama 工具调用翻车实录:描述越详细,准确率反而降 30%--我的技能模板救场方案 从「删除数据库」到精准调度:大模型工具调用的优化实战 周五灰度部署前,我的 AI 智能体突然把「发送邮件」工具调成了「删除数据库」。看着监控面板上暴涨的错误率,我意识到 Llama 对工具描述的理解…

2026/8/16 8:24:42 阅读更多 →
LCA算法全解析:从倍增到Tarjan,四种经典模板实现与应用场景

LCA算法全解析:从倍增到Tarjan,四种经典模板实现与应用场景

1. 项目概述:从“最近公共祖先”到算法竞赛的基石 最近公共祖先,简称LCA,这个概念听起来有点学术,但它在解决很多实际问题时,就像一把万能钥匙。想象一下,你面前有一棵庞大的家族树,你想知道张三…

2026/8/16 8:24:42 阅读更多 →
跳出花哨模板陷阱:毕夏 AI AIPPT,一站式搞定学术全场景演示文稿

跳出花哨模板陷阱:毕夏 AI AIPPT,一站式搞定学术全场景演示文稿

不少科研学生都会陷入同一个难题:耗费大量精力写完文稿,却卡在 PPT 制作环节。市面上多数 AI PPT 工具偏向商业宣传场景,模板浮夸、逻辑松散,很难适配学术汇报严谨规范的要求。手动制作 PPT,梳理框架、提炼文字、绘制图…

2026/8/16 8:24:42 阅读更多 →
k8s-kube-proxy

k8s-kube-proxy

kube-proxy kube-proxy 是 K8s 服务于 Pod 网络的核心组件,负责实现 Service(服务) 到 Endpoint(后端 Pod) 的流量转发与负载均衡。 环境准备 rootmaster30 ~ 13:52:52# kubectl create ns services rootmaster30 ~ 14…

2026/8/16 8:24:42 阅读更多 →
Windows系统Node.js安装配置全攻略:从版本管理到环境优化

Windows系统Node.js安装配置全攻略:从版本管理到环境优化

1. 项目概述:为什么Windows上的Node.js安装值得单独聊聊 如果你刚开始接触前端或者后端开发,Node.js大概率是你绕不开的一个技术栈。很多教程会告诉你“去官网下载安装包,一路Next就行”,听起来简单,但实际动手时&…

2026/8/16 8:24:42 阅读更多 →
论文AI率0%黑科技!降AI率网站留学生亲测:Turnitin查重秒变“人类原创“

论文AI率0%黑科技!降AI率网站留学生亲测:Turnitin查重秒变“人类原创“

写论文用AI确实省心又高效,尤其是面对海量资料和紧迫的截止日期时,简直就像开挂一样。但千万别高兴太早,现在不少高校对AI痕迹的检测比查重还严格,Turnitin一查,轻则被打回重写,重则直接挂科影响毕业。AI生…

2026/8/16 8:23:42 阅读更多 →

日新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/16 6:00:23 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/16 6:00:24 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/16 6:00:27 阅读更多 →