一.总

目的:记录n个人的年龄。另外要删去年龄重复的结点,从而使得最终n个人的年龄各不相同。
思考点:我在调试的时候,感觉到最困难的部分,是修改“删去重复结点函数”。但这时我使用“数形结合”的思想,来帮助我理解代码,就会很清楚问题出在哪里,最终取得了还不错的效果。
对象:单链表
方法:使用4个自定义函数:创建链表函数、删除结点函数、链表遍历函数、删去重复结点函数。

二.分(全部代码拆成以下的6部分)

1.创建链表函数

void Create(note* head,int n)
{for (int i = 1; i <= n; i++) {note* p;p = (note*)malloc(sizeof(note));if (p) {fgets(p->age, 20, stdin);p->next = head->next;head->next = p;}}
}

2.删除结点函数

void Delete(note* head, int n) {note* x;x = head;int i = 0;while (i < n - 1) {i++;x = x->next;}note* y;y = x->next;x->next = y->next;free(y);
}

3.链表遍历函数

void Output(note* head)
{note* p;p = head->next;while (p) {puts(p->age);p = p->next;}
}

4.删去重复结点函数

void Func(note* head,int n)
{note* p;note* q;p = (note*)malloc(sizeof(note));q = (note*)malloc(sizeof(note));p = head->next->next;if (p&&q) {while(p) {q = head->next;for (int j = 1 ; (p-q!=0)&&(p->next!=0); j++) {if (atoi(p->age) == atoi(q->age)) {q = q->next;Delete(head, j);}}p = p->next;}}
}

5.结构体

typedef struct tapNOTE {char age[20];struct tapNOTE* next;
}note;

6.主函数

int main()
{note* head;head = (note*)malloc(sizeof(note));head->next = '\0';char s[5];int n;fgets(s, 5, stdin);n = atoi(s);if (head) {Create(head, n);}Func(head, n);Output(head);free(head);return 0;
}

三.数形结合(核心是删去重复结点函数)

首先,输入3个年龄,分别是23,12,12。下图是从键盘输入的内容。

接着,程序从最初开始调试,仅执行创建链表函数后,停在了删去重复结点函数处。下图是auto型变量(非静态局部变量)的内容。

下面是“数形结合”中的“图形”:

分析:

问:现在p和q所指的内存单元中,出现了有重复内容的结点,我们该怎么办呢?

答:我没有学会双链表,只好用笨方法。这个时候,我们使用基础的删除结点函数,来帮助我们删除内容。

1.第1步:更改p的指向,让它指向下一个结点。这时j的值为1,代表着需要删除的结点是第1个。图形如下:

2.第2步:使用删除结点函数,删除第2个结点。

最后,我们不借助双链表,只用单链表和节点删除函数,达到了任务要求。

四.总结

虽然以上的分享,只是优秀程序员们调试的基本功,但是我想传达2个观点:

1.我一直在向我们学校的优秀同学学习,学习他们跨学科的思想,并尝试把高中数学常用的“数形结合”思想应用到编程中。我切身体会到,这样做给我带来了很多欢乐。

2.我也没有忘记高中班主任对我说过的话:“都这个关头了,你们一定要戒骄戒躁,不要眼高手低,多在纸上写写画画。你看我带的生物,为什么就比其他班好?”。戒骄戒躁,勤于动手,是我至今受用不尽的原则。

C链表:“数形结合”让调试更快纠错相关推荐

  1. 更快的Maven构建工具mvnd和Gradle哪个性能更好?

    作者 | 磊哥 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) Maven 作为经典的项目构建工具相信很多人已经用很久了,但如果体验过 Gradl ...

  2. 使嵌入式系统调试更容易:有用的硬件和软件提示

    使嵌入式系统调试更容易:有用的硬件和软件提示 Making embedded system debug easier: useful hardware & software tips 嵌入式系 ...

  3. 数形结合「求解」希尔伯特第13个数学难题

    法布是芝加哥大学(University of Chicago)的一名拓扑学家,他对自己最近的在某个问题上的一次失败感到非常高兴. 有一个问题是德国数学家大卫 · 希尔伯特在20世纪初预测的23个当时尚 ...

  4. 二元函数对xy同时求导_陕西省特级教师魏玉英:让“数形结合思想”浸润在教学中——《二元一次方程与一次函数》同课异构课例分析...

    魏玉英,安康市平利县城关初级中学数学教师,陕西省特级教师,陕西省教学能手,安康市突出奉献专家 所谓数形结合,就是根据数学问题的题设和结论之间的内在联系,既分析其数量关系,又掲示其几何意义,使数量关系和 ...

  5. 【深度学习】数形结合的图像处理(文末介绍了一种新型网络)

    [深度学习]数形结合的图像处理(文末介绍了一种新型网络) 文章目录 [深度学习]数形结合的图像处理(文末介绍了一种新型网络) 前言: OpenCV介绍 1 读取图像 2 修改图像尺寸 3 矩阵操作处理 ...

  6. [转]九个Console命令,让js调试更简单

    转自:九个Console命令,让js调试更简单 一.显示信息的命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <!DOCTYPE html> <html ...

  7. UVA 1451 Average 数形结合

    借此把数形结合相关的知识补充补充,戳这里→浅谈数形结合思想在信息学竞赛中的应用 emmmmm求区间斜率最大的问题,用单调队列去维护下凸曲线,感觉有些博客解释的蛮清楚的,比如这里→戳 注意一下:下标的问 ...

  8. c++ console 取实时输入_灵活使用 console 让 js 调试更简单

    译者:前端小智 原文: https://medium.com/@mattburgess/beyond-console-log-2400fdf4a9d8https://medium.freecodeca ...

  9. console application_灵活使用 console 让 js 调试更简单

    摘要: 玩转console. 原文:灵活使用 console 让 js 调试更简单 作者:前端小智 Fundebug经授权转载,版权归原作者所有. Web 开发最常用的高度就是 console.log ...

最新文章

  1. 2021年大数据常用语言Scala(五):基础语法学习 字符串
  2. 百度大脑发布企业服务解决方案,将 AI 技术落实到细分领域
  3. 面试常用shell脚本_Shell脚本编写及常见面试题
  4. thinkphp验证码功能
  5. SCI论文写作训练营笔记汇总02_英文科技论文阅读与解析
  6. 400是什么错误_Spring Boot的REST API错误处理
  7. goroutine 相关知识8
  8. Sell yourself 1
  9. 2021泰安市地区高考成绩排名查询,2021年山东高考成绩排名及一分一段表
  10. spark源码阅读之network(2)
  11. 渗透理解Animation时间插值Interpolator类
  12. 打字测试软件 tt,TT打字测试软件
  13. 用sendcloud来发邮件
  14. 代码维护服务器,维护服务器的利器-pubwin 2009程序代码
  15. matlab矩阵 代表什么,matlab中矩阵AB是什么意思
  16. matlab输出数据为excel文件
  17. 单词拆分java与填表法_139. 单词拆分
  18. vue教程 pdf vue权威指南
  19. 使用纹理(Textures)
  20. 装机步骤,顺序,注意事项

热门文章

  1. 程序员的成长故事之 五年技术之路
  2. 点积(点乘、数量积、内积)和叉积(叉乘、向量积、外积)
  3. 尽在双11 阿里巴巴技术演进与超越
  4. 这 27 位,为什么能成为马斯克的“左膀”与“右臂”?
  5. npm ERR! { Error: EPERM: operation not permitted, mkdir 'C:\Program Files\nodejs\node_cache\_locks'
  6. OpenI入门-自己动手new一个Project
  7. 【程序员日记】快乐的一周嘛(第7期)(财富、快乐、技术)
  8. #1024#番外篇科普为什么1024是程序员日?2020年10月24日,程序员为啥都不放假?
  9. 斐波那契数列通项公式的求法
  10. 大麻病毒详细介绍与汇编分析