实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
来源:互联网 发布:ofo登录 网络请求超时 编辑:程序博客网 时间:2024/06/05 21:13
实验目录
实验要求
实验过程
实验心得
实验要求
1.给lab5-1.tar.gz(在实验楼Linux虚拟机环境下~/se_files/目录下)找bug,quit命令无法运行的bug
2.利用callback函数参数使Linktable的查询接口更加通用
3.注意接口的信息隐藏
实验过程
1.将lab5-1.tar.gz解压缩,复制到~/Code/shiyanlou_cs122/lab5/目录下
liuqing@liuqing-virtual-machine:~/MSE$ cd learngit/
liuqing@liuqing-virtual-machine:~/MSE/learngit$ cd lab5
liuqing@liuqing-virtual-machine:~/MSE/learngit/lab5$ tar -zxvf lab5-1.tar.gz
./lab5.1/
./lab5.1/linktable.c
./lab5.1/linktable.h
./lab5.1/menu.c
./lab5.1/testlinktable.c
liuqing@liuqing-virtual-machine:~/MSE/learngit/lab5$ ls
lab5.1 lab5-1.tar.gz
liuqing@liuqing-virtual-machine:~/MSE/learngit/lab5$ cd lab5.1/
liuqing@liuqing-virtual-machine:~/MSE/learngit/lab5/lab5.1$ vi menu.c
2.修改quit命令无法运行的bug
SearchLinkTableNode函数中循环终止条件出错,导致没有遍历尾结点,将循环条件pNode != pLinkTable->pTail修改为pNode != NULL
tLinkTableNode * SearchLinkTableNode(tLinkTable *pLinkTable, int Conditon(tLinkTableNode * pNode)){ if(pLinkTable == NULL || Conditon == NULL) { return NULL; } tLinkTableNode * pNode = pLinkTable->pHead; while(pNode != NULL) { if(Conditon(pNode) == SUCCESS) { return pNode; } pNode = pNode->pNext; } return NULL;}
gcc编译执行,quit命令可以正常执行。
3.提高Linktable接口通用性
主要修改几个文件中的几个函数。具体如下:
linktable.h
tLinkTableNode * SearchLinkTableNode(tLinkTable *pLinkTable, int Conditon(tLinkTableNode * pNode, void * args), void * args);
linktable.c
tLinkTableNode * SearchLinkTableNode(tLinkTable *pLinkTable, int Conditon(tLinkTableNode * pNode, void * args), void * args){ if(pLinkTable == NULL || Conditon == NULL) { return NULL; } tLinkTableNode * pNode = pLinkTable->pHead; while(pNode != NULL) { if(Conditon(pNode,args) == SUCCESS) { return pNode; } pNode = pNode->pNext; } return NULL;}
menu.c
//SearchConditionint SearchCondition(tLinkTableNode * pLinkTableNode, void * args){ char *cmd = (char *)args; tDataNode * pNode = (tDataNode *)pLinkTableNode; if(strcmp(pNode->cmd, cmd) == 0) { return SUCCESS; } return FAILURE; }//FindCmdtDataNode* FindCmd(tLinkTable * head, char * cmd){ return (tDataNode*)SearchLinkTableNode(head,SearchCondition, (void *)cmd);}
在lab5文件夹下编译运行:
$ gcc menu.c linkTable.c -o menu
$ ./menu
4.实验结果如图所示:
5.使用git进行代码托管,github地址 https://github.com/daipenguin/learngit/tree/master/lab5/lab5.1
liuqing@liuqing-virtual-machine:~/MSE/learngit$ git add lab5liuqing@liuqing-virtual-machine:~/MSE/learngit$ git commit lab5 -m "用callback增强链表模块来实现命令行菜单小程序V2.8"
liuqing@liuqing-virtual-machine:~/MSE/learngit$ git push origin master
实验心得
使用callback机制遍历、搜索链表
通过callback机制实现了自定义函数,将该函数传递到被调函数,执行完毕再返回
对于“卧底”有了更进一步的了解
- 实验五.用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
- angularjs之购物车的增改查1
- UUID 和 GUID 的区别
- DrawerLayout侧拉
- SurfaceView播放视频
- 简单的朴素贝叶斯模型练习
- 实验五:用callback增强链表模块来实现命令行菜单小程序V2.8
- 考后梳理之信息系统开发与管理
- light oj 1017
- js基础(一)——数据类型
- git安装
- L1-034. 点赞
- Kickstart Round G 2017 Problem A. Huge Numbers
- 闭包
- nginx 反向代理设置中的proxy_redirect