有问题更新链接列表

时间:2016-05-03 20:34:36

标签: c++

class MostBought {        //class in a .h file
private:
    typedef struct node {
        double moneySpent;
        char Name[50];
        node *next;
} * nodePtr3;

nodePtr3 head3;
nodePtr3 curr3;
nodePtr3 temp3;
nodePtr3 next3;

public:
    MostBought();
    void addMoney(double x, char Category[50]);
    void PrintList(); 
}; 

MostBought::MostBought() {  //everything else in main.cpp
    head3 = NULL;
    curr3 = NULL;
    temp3 = NULL;
    next3 = NULL;
}


void MostBought::addMoney(double x, char Category[50]) {
temp3 = head3;
while (temp3 != NULL) {
    if (temp3->Name == Category) {
        temp3->moneySpent = temp3->moneySpent + x;
    }
    else {
        temp3 = temp3->next;
    }
}
}

我在main()中调用addMoney是这样的 “addMoney(aa.Price,aa.Category)”其中aa是结构体的对象。 程序编译,但当我尝试使用其名称和值打印所有节点时,所有值都等于0。 出了什么问题?

1 个答案:

答案 0 :(得分:1)

第4行的'(temp3-> Onoma == Katigoria)'测试不会出现语法错误,但可能无法按照您的预期执行操作。它不进行字符串比较,它比较两个内存地址是否相同。如果要查看两个字符串是否相等,请使用strcmp()或类似函数。