实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
来源:互联网 发布:淘宝开店在哪交保证金 编辑:程序博客网 时间:2024/06/05 18:57
- 赵展翔 SA17225524
- 【网易云课堂昵称 + 《软件工程(C编码实践篇)》MOOC课程作业http://mooc.study.163.com/course/USTC-1000002006 】
Debug
我小心翼翼的打开了lab5-1的压缩文件并且解压,按照老师所说的三个问题进行修改:
- 给Linktable增加Callback方式的接口;
- 进一步改进Linktable的Callback方式的接口;
- 用callback函数实现的多态浅析。
1th
quit命令的bug在于SearchLinkTableNode()函数,遍历链表的循环语句while()条件结束的标志为找到表结尾,因此程序在遍历到表结尾最后一个命令quit的时候就GG了,因此需要修改while语句结束的条件为pNode != NULL
while(pNode != NULL) { if(Conditon(pNode) == SUCCESS) { return pNode; } pNode = pNode->pNext; } return NULL;}
2th
利用callback函数参数使Linktable的查询接口更加通用:先将cmd字符串取消定义为全局变量,然后修改callback函数。
tLinkTableNode * SearchLinkTableNode(tLinkTable *pLinkTable, int Conditon(tLinkTableNode * pNode, void* args), void* args);
3th
信息的隐藏:在linktable.c中定义Linktable结构体,而在linktable.h中只留下LinkTable结构的声明。
typedef struct LinkTable tLinkTable;
struct LinkTable{ tLinkTableNode *pHead; tLinkTableNode *pTail; int SumOfNode; pthread_mutex_t mutex;};
到这里就修改完成了,我在code::blocks上面运行了一下没问题:
惯例
git clone然后mkidr lab5 进入lab5然后vi环境下编写menu.c/linktable.c/linktable.h
运行与提交
gcc menu.c linktable.c -o menu然后./menu即可:
然后git add,git commit,git push就ok啦
完整代码(如下链接)
github传送门:完整代码请点击
总结
又是最后一天才做作业emmmm这几次实验都是循序渐进我觉得真的还不错,对于我这种没有基础的人来说,确实慢慢学会了怎么让程序结构更加合理完善,学到了学到了。。。。不说了我又要看vue了,下周一晚上还要查呢。。。
阅读全文
0 0
- 实验五.用callback增强链表模块来实现命令行菜单小程序V2.8
- 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
- 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
- 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
- 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
- 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
- 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
- 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
- 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
- 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
- 实验报告五:用callback增强链表模块来实现命令行菜单小程序V2.8
- 实验报告五:用callback增强链表模块来实现命令行菜单小程序V2.8
- 软件工程(C编码实践篇)”实验报告 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
- “软件工程(C编码实践篇)”实验报告【实验五:用callback增强链表模块来实现命令行菜单小程序V2.8】
- [高级软件工程实验]用callback增强链表模块来实现命令行菜单小程序V2.8
- 软件工程(C编码实践篇) 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
- 用callback增强链表模块来实现命令行菜单小程序V2.8
- 用callback增强链表模块来实现命令行菜单小程序V2.8
- IE 浏览器下 按下enter button自动触发click事件的解决方案
- framebuffer编程
- 【codevs 1099】字串变换
- redis异常解决:jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set
- 手势和tableView点击冲突解决
- 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
- EventBus使用
- 升级Xode导致CocoaPods不可用,升级CocoaPods解决
- 语音识别标准中WER和SER解释
- 《Objective-C基础教程》第11章 属性
- jdbc远程连接hiveserver2
- 初来乍到
- 多线程
- redis集群动态添加主节点和从节点