我正在做一个订单程序,我有一个产品的二叉搜索树,项目包含产品名称、库存数量、订单数量和价格。当我创建订单时,所选商品中的订单数量会根据订单增加。
我需要创建一个名为 batchUpdate 的函数,该函数遍历树并将每个项目的订单数量减去库存数量,显然再次将订单数量设置为 0。创建新订单时正在更新订单数量,但由于某种原因没有发生任何事情。这里有几个片段:
void BatchUpdate(PTree * pt) //PTree is a typedef, the tree
{
if (PTreeIsEmpty(pt))
puts("Nothing to update!");
else
{
puts("test"); //just for debug, it is still being displayed
TraverseP(pt,MinusStock); //Traverses the tree, and applies function
//MinusStock to each item in the node
}
}
void MinusStock(Prdct C) //Prdct is a typedef of struct containing details
{
C.StockQ = C.StockQ - C.OrderQ;
C.OrderQ = 0;
}
void TraverseP(const PTree * ptree, void (* pfun)(Prdct item))
{
if (ptree != NULL)
InOrderP(ptree->root,pfun);
}
static void InOrderP(const PNode * root, void (* pfun)(Prdct item))
{
if (root != NULL)
{
(*pfun)(root->item);
InOrderP(root->left, pfun);
InOrderP(root->right, pfun);
}
}
没有给出错误,它只是忽略遍历,并显示 puts("test")