所以,我正在做这个客户应用程序,您可以在其中创建/修改/搜索/列出客户。后来,这扩展到通过订单等方式将客户与产品联系起来,但我现在的重点只是客户。我已经创建了一个二叉树,所有这些功能都可以工作,但是我需要一种方法来存储创建的客户以供下次使用。
我认为以某种方式我必须将所有客户(在每个节点中找到)传输到一个数组中,然后将该数组写入文件“customer.dat”中。已经花了很多时间了。以下是一些代码片段,可帮助更好地理解我拥有的功能和结构:
typedef struct customer
{
char Name[MAXNAME];
char Surname[MAXNAME];
char ID[MAXID];
char Address[MAXADDRESS];
} Cstmr;
typedef struct node
{
Cstmr item;
struct node * left;
struct node * right;
} Node;
typedef struct tree
{
Node * root;
int size;
} Tree;
上面是结构体,Node 包含 Cstmr 类型的项目和链接的左右节点。树包含根节点和大小。
void Traverse (const Tree * ptree, void (* pfun)(Cstmr item))
{
if (ptree != NULL)
InOrder(ptree->root,pfun);
}
static void InOrder(const Node * root, void(* pfun)(Cstmr item))
{
if (root != NULL)
{
InOrder(root->left, pfun);
(*pfun)(root->item);
InOrder(root->right, pfun);
}
}
这些函数用于列出客户并添加了该函数
void printItem(Cstmr C)
{
printf("%-10s %-10s %-8s\n", C.Name, C.Surname, C.ID);
}
最后通过编写执行
Traverse(tree,printItem);
我尝试将 printItem 更改为另一个函数,以便添加到数组(输出到文件而不是屏幕),但现在事情变得太复杂了!有什么建议么?