实验五:用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
原创粉丝点击