脚本宝典收集整理的这篇文章主要介绍了自学C语言-20211028,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
CPRimerPlusV6这本书的学习经历总是来说还是比较令人愉悦的,一些课后习题和编程练习尽量不依靠答案完成,有些比较难的题目甚至能花费我半天的时候去钻研,再有些特难的题目,我就先按照答案把代码打一遍有个初步了解,然后再自己打一遍,有时候头脑思维发散一些还能对习题要求进行再拓展,其他内容基本上还好,但是文本操作的内容有些忘记了我觉得过后还是需要再复习一下,毕竟操作文本储存数据也算计算机的实用性体现。有些C99的内容由于我的IDE是VS2010支持不了,所以也是跳过没学了。
CPrimerPlusV6目前学到第十七章-高级数据表示,据说这是数据结构的内容,数据结构的书《数据结构与算法分析-c语言描述》我只看了几眼觉得很难就先放一边了,现在在琢磨这个ADT抽象数据类型-17.3,我感觉通过这个习题我发现自己的指针基础还是很薄弱。我本来计划将原本的List(指向Node结构类型的指针变量)更改成List(新建立的list结构类型的变量,list结构类型包含指向Node结构首项的指针、指向Node结构尾项的指针、Node结构计数),运行后链表只能保存输入的最后两项内容,琢磨了一下午都没搞懂,我只能改回与书本一致的方法,等以后指针内容学习扎实再说。我现在又想在Node结构中添加一个记录当前项目数的标签,这个标签添加后可以读取存储的项数。
问题(solved):我在main函数中建立了一个指针变量指向(待保存数据的指针变量所指向的Node结构类型),通过while循环让新建立的指针变量查找链表的最后一项,然后读取该项所记录的项目数以显示总项目数。但是这几行我新添加的代码总是造成意外停止。
List pscan=man;
while(pscan->next)
pscan=pscan->next;
printf("Database contains %d students.n",(pscan->index+1);
20211028解决了:更改为建立一个2级指针变量指向一个指向(待保存数据的指针变量所指向的Node结构类型)的指针的指针。
while((*pscan)->next)
*pscan=(*pscan)->next;
printf("Database contains %d students.n",((*pscan)->index+1);
问题(solved):这下能顺利运行了,但发现一个问题,记录的数据项数错误,有重复,非递增,我觉得应该是添加数据的AddStudent函数有问题。
short AddStudent(Student student,List *plist){ int count=0; List ptemp; List pscan=*plist; if(!(ptemp=(List)calloc(1,sizeof(Node)))) return 0; ptemp->student=student; ptemp->next=NULL; if(!pscan) { *plist=ptemp; (*plist)->index=0; } else { while(pscan->next) { //count=pscan->index;//错,应放在后面一步 pscan=pscan->next;
count=pscan->index;//对,应放在后面一步 } pscan->next=ptemp; pscan->next->index=count+1;//如改成++应放在count前面 }return 1;}
经过探索,pscan进入链表查找最后一项的过程中,局部变量count存储链表index标签计数应该放在进入下一链表之后,另外链表最后一项count更新时,如果用++的话必须放在count之前,否则count始终为1(因为每次调用函数时count归0,造成链表index标签无法递增)
问题(solving):第二次循环录入的时候之前录入的数据无法罗列(被覆盖?)
以上是脚本宝典为你收集整理的自学C语言-20211028全部内容,希望文章能够帮你解决自学C语言-20211028所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。