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

news/2024/12/21 12:24:56/文章来源:https://www.cnblogs.com/vincent2077/p/18620636

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

作业信息

这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)
这个作业要求在哪里 <作业要求的链接>(2024-2025-1计算机基础与程序设计第十三周作业)
这个作业的目标 <《C语言程序设计》第12章并完成云班课测试>
作业正文 ... 本博客链接https://home.cnblogs.com/u/vincent2077

教材学习内容总结

C语言中的链表是一种动态数据结构,它由节点组成,每个节点包含数据部分和指向下一个节点的指针。

  1. 链表节点的定义

    • 定义一个结构体来表示链表的节点,通常包含数据和指向下一个节点的指针。
    typedef struct Node {int data;struct Node* next;
    } Node;
    
  2. 创建节点

    • 使用 malloc 或者在栈上声明来创建新的节点。
    Node* createNode(int data) {Node* newNode = (Node*)malloc(sizeof(Node));if (newNode != NULL) {newNode->data = data;newNode->next = NULL;}return newNode;
    }
    
  3. 插入节点

    • 在链表的头部、尾部或中间插入节点。
    • 头部插入:
    void insertAtHead(Node** head, int data) {Node* newNode = createNode(data);newNode->next = *head;*head = newNode;
    }
    
    • 尾部插入:
    void insertAtTail(Node** head, int data) {Node* newNode = createNode(data);if (*head == NULL) {*head = newNode;} else {Node* temp = *head;while (temp->next != NULL) {temp = temp->next;}temp->next = newNode;}
    }
    
  4. 删除节点

    • 删除指定位置的节点或删除值为特定数据的节点。
    void deleteNode(Node** head, int key) {Node* temp = *head, *prev = NULL;if (temp != NULL && temp->data == key) {*head = temp->next;free(temp);return;}while (temp != NULL && temp->data != key) {prev = temp;temp = temp->next;}if (temp == NULL) return;prev->next = temp->next;free(temp);
    }
    
  5. 搜索节点

    • 在链表中搜索特定值的节点。
    Node* search(Node* head, int key) {Node* temp = head;while (temp != NULL) {if (temp->data == key) return temp;temp = temp->next;}return NULL;
    }
    
  6. 打印链表

    • 遍历链表并打印每个节点的数据。
    void printList(Node* node) {while (node != NULL) {printf("%d -> ", node->data);node = node->next;}printf("NULL\n");
    }
    
  7. 链表反转

    • 反转链表的方向。
    Node* reverseList(Node* head) {Node* prev = NULL, * current = head, * next = NULL;while (current != NULL) {next = current->next;current->next = prev;prev = current;current = next;}head = prev;return head;
    }
    
  8. 内存管理

    • 使用 mallocfree 管理动态分配的内存。
  9. 循环链表

    • 链表的最后一个节点的 next 指针指向头节点,形成一个闭环。
  10. 双向链表

    • 每个节点有两个指针,一个指向前一个节点,一个指向后一个节点。
  11. 排序链表

    • 使用排序算法(如归并排序、快速排序)对链表进行排序。
  12. 链表与数组的转换

    • 将链表转换为数组以利用数组的索引特性,或者将数组转换为链表以利用链表的动态特性。

基于AI的学习







代码调试中的问题和解决过程

OJ

  • 问题1:输出字符串的最后一个字母时部分正确
  • 问题1解决方案:字符长度限定过小,对于部分动态测试已经超过了数组容量,宏定义N值增大即可
  • 问题2:输出时未注意换行
  • 问题2解决方案:以后注意换行,避免出现数据错误
    实验
    1.问题:查找函数中的“No Found”一开始输出语句放至循环内部,导致其多次出现
    解决方法:将语句放至循环外部;

2.问题:计算总分时出现问题,总分显示为随机数
解决方法:记得在循环开始处将sum初始化为0!

3.问题:成绩表排版混乱
解决方法:学习输出时位移指令,或者灵活运用\t;

4.问题:排序出现问题
解决方法:在冒泡排序中需要先遍历一次找出最值再实行交换,否则不仅会多次交换增加运算并且还会出现顺序问题;

5.问题:对于strcmp运用不够熟练,记住结果有三种:>0,<0,==0
解决方法:记住字符串函数的调用方式和输出格式;

6.问题:n的输入应该在何处没有处理好
解决方法:在此代码中n的输入应该放在前面,以便于在文件读取的时候加入限制,从而读入超过数组容量的数据;

7.问题:fread()函数中sizeof括号里的涉及的应该是指针,填入stu一般指向stu[0],读取时会超过容量出现问题
解决方法:可以使用stu[0]*n以确保容量足够。

  • 计划学习时间:4小时

  • 实际学习时间:6小时

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

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

相关文章

纪念 Jonathan Barzilai

我在读博期间研究了关于非线性优化算法中的Barzilai-Borwein(BB)步长。正如我的导师安老师所言:梯度下降法是优化算法的基石(只考虑一般可微的目标函数)。在该算法中,迭代点每次沿着当前的负梯度方向"走一步",一直迭代下去,逼近最优解(当然是局部的)。一个自然地…

省选数学专题

昌吉市传教士出金身难度升序排序(大概吧)。 [AGC016C] +/- Rectangle 签,虽然国集作业。 贪心是显然的,不说了,这里只考虑正数如何填。 如果\(H\times W-\left\lfloor\frac{H}{h}\right\rfloor\times h\times \left\lfloor\frac{W}{w}\right\rfloor\times w\le \left\lflo…

《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验

第四十五章 人脸识别实验 1)实验平台:正点原子DNK210开发板 2)章节摘自【正点原子】DNK210使用指南 - CanMV版 V1.0 3)购买链接:https://detail.tmall.com/item.htm?&id=782801398750 4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/A…

【寒武纪mlu220模型移植】(一)目标检测YoLoV8

前言:目标检测可能是大家用的比较多的,先完善这一篇吧。yolov5的导出可以参考官方文档。并且博主比较懒,已经做过一遍的事情,不想验证第二遍,如果有步骤错误或者疏漏导致中间遇到了问题,可以先自己debug,流程大致就是这样的。 一、修改源码首先是拉取yolov8最新的源码,…

基于钜泉计量AD的电表应用专题推荐(ATT7053D、HT7136、HT7627S-E

关于电力仪表上应用专题介绍,钜泉电能计量、PA驱动、Flash存储HiTrend(钜泉)电能计量芯片 单相计量ADC:ATT7053D,ATT7053C,HT7017,HT7017C 三相计量ADC:HT7036、HT7038、ATT7022E、HT7136、HT7132、HT7032-L 单相计量SOC:HT5019、HT5017,HT5025、HT5029,HT5033,HT503…

AI视频抠图来了!还可以替换视频背景,附下载链接

虽然人工智能正在飞速发展中,图像处理技术也在不断升级,但视频背景去除一直都是图像处理任务中最具挑战性的难题之一 Clipper是一款专注于高精度图像分割的AI工具,用于图像和视频的背景去除,允许用户直接输出透明背景(自定义颜色)的视频文件,还提供用一张图片或者其它视…

习题10.3

import numpy as np import statsmodels.formula.api as smf import matplotlib.pyplot as plt# 加载数据 a = np.loadtxt(data10_3.txt)# 设置绘图参数 plt.rc(text, usetex=True) # 启用 LaTeX 字体 plt.rc(font, size=16) # 设置字体大小 plt.style.use(default) # 使用默…

浅谈一下本机、服务器、docker-compose 容器之间网络通信

一、首先,先区分四个对象,它们分别有自己的网络 1、云服务器上,应用服务容器网络(app,nginx,mysql,redis等)app.net 2、云服务器上,模型服务容器网络(ai服务) 模型网络 ai.net 3、云服务器上:宿主机网络(服务器本机) 服务器本机网络 host.net 4、本机:本地网络 loca…

习题10.1

import numpy as np import statsmodels.api as sm import matplotlib.pyplot as plt def check(data): # 提取数据的第一列和第二列 x = data[:, 0] y = data[:, 1] # 使用statsmodels进行线性回归分析 model = sm.OLS(y, sm.add_constant(x)).fit() # 添加常数项 print(mode…

static修饰成员的特点及static修饰成员变量内存图解-java se进阶 day01

1.static介绍 static是静态的意思,它可以用于修饰成员变量和成员方法2.static的特点1.被static修饰了的成员变量,可以被类中的所有对象所共享 虽然stu02没有给school赋值,但是我们用stu02调用时依旧成立,并且打印了南昌交通学院,因为school被共享了,恰好stu01又为其赋值了…

IIS运行遇到问题

1:打开网站时出现的错误提示2:下载对应的.net core Runtime后正常,如下图所示

【最短路】

【最短路算法系统概述】