实验报告五:用callback增强链表模块来实现命令行菜单小程序V2.8
学号:SA17225091
github:https://github.com/lgddd
1.实验要求
本实验在提供的代码基础上进行
给lab5-1.tar.gz找bug,quit命令无法运行的bug
利用callback函数参数使Linktable的查询接口更加通用
注意接口的信息隐藏
2.实验过程
(1)查找bug
tLinkTableNode SearchLinkTableNode(tLinkTable pLinkTable, int Conditon(tLinkTableNode pNode))
{
if(pLinkTable == NULL || Conditon == NULL)
{
return NULL;
}
tLinkTableNode pNode = pLinkTable->pHead;
while(pNode != pLinkTable -> pTail)
{
if(Conditon(pNode) == SUCCESS)
{
return pNode;
}
pNode = pNode->pNext;
}
return NULL;
}
pNode != pLinkTable -> pTail错误
pNode遍历到尾节点时还未访问便退出循环
应该为pNode != NULL
(2)在本地仓库gr_lab创建lab5,在lab4的基础上编写代码。
详细代码见https://github.com/lgddd/gr_lab/tree/master/lab5
node.c
#include "node.h"
cNode *findCommand(LinkTable *table,condition function,char *cmd)
{
return (cNode*)searchNodeOfLinktable(table,function,cmd);
}
node.h
#include <stdio.h>
#include <string.h>
#include "LinkTable.h"
#define CMD_SIZE 10
#define CMD_DESC 50
typedef struct iNode
{
LinkTableNode* pNext;
char cmd[CMD_SIZE];
char desc[CMD_DESC];
void(*func)();
}cNode;
cNode *findCommand(LinkTable *table,condition function,char *cmd);
3.实验心得与总结**
这次实验实现了给Linktable增加Callback方式的接口,在menu中用Callback方式查询链表,进一步改进Linktable的Callback方式的接口
用callback函数实现的多态浅析,实现了信息隐藏,有利于提高编程的安全性。以后我也会把这种思想运用其他代码的编写中。