我创建了一个用于保存生物信息的结构,我使用char类型的变量来保存它的生物类型(A:Aphid,L:Ladybird)。
struct Creatures {
int xco;
int yco;
char type;
struct Creatures *next;
};
extern struct Creatures *creatureHead;
extern struct Creatures *creatureTail;
当我添加“生物”时,我会添加一个参数来识别它的生物类型。我还注释掉了检查值是否正确传递的行(它是)。
struct Creatures* add_Creature(int xcoord,int ycoord,char ctype) {
struct Creatures *ptr = new Creatures;
ptr -> xco = xcoord;
ptr -> yco = ycoord;
//cout << "ctype: " << ctype << endl;
ptr -> type = ctype;
//cout << "type: " << ptr->type << endl;
ptr -> next = NULL;
if (creatureHead == NULL) {
creatureHead = creatureTail = ptr;
}
else {
creatureTail -> next = ptr;
creatureTail = ptr;
}
return ptr;
}
以下是我添加生物的示例:
add_Creature(xco,yco,'A');
然后我使用以下方法打印出所有蚜虫和瓢虫的表格,此时它没有输出任何内容,我不知道为什么:
void printStuff() {
struct Creatures *ptr = new Creatures;
cout << "============" << endl;
cout << "Aphid Coords" << endl;
cout << "============" << endl;
while(ptr != NULL && (ptr->type == 'A')) {
cout << "[" << ptr->xco << "][" << ptr->yco << "]" << endl;
ptr = ptr->next;
}
cout << "============" << endl << endl;
/////////////////////////////////////////////////////////////////
cout << "===============" << endl;
cout << "Ladybird Coords" << endl;
cout << "===============" << endl;
while(ptr != NULL && (ptr->type == 'L')) {
cout << "[" << ptr->xco << "][" << ptr->yco << "]" << endl;
ptr = ptr->next;
}
cout << "===============" << endl;
}
为什么我的print方法中的while循环不能验证并打印出正确的结果?
答案 0 :(得分:1)
我不知道我是否遗漏了某些内容,但我没有看到您在ptr
函数中声明的printStuff
指针的初始化,因此它可能不是null
但是“type”字段也可能不等于'A'。