具有多个结构的链表



我是链表的新手,使用一个带有链表的结构没有问题。但是,当我尝试使用结构"people"创建节点并使用另一个结构"队列"将它们链接在一起时,我遇到了分段错误。有人可以看看我的双结构代码中有什么问题吗?

enum Name{Ashley, Peter, Mike, Bill, Chris, Kate, Marry};
struct people{
Name name;
double height;
int weight;
};
struct Queue{
people* ppl;
int data;
Queue* next;
};
void print(Queue * queueHead){
Queue * traverse = queueHead;
while(traverse!=NULL){
cout << "height " << traverse->ppl->height << endl;
traverse = traverse->next;
}
}
int main(){
Queue * queueHead = NULL;
people * node = new people;
node->name = Ashley;
node->height = 5.5;
node->weight = 125;
queueHead->ppl = node;
queueHead->next = NULL;
node=NULL;
print(queueHead);
}

如果不首先为 queueHead 分配内存(在您的情况下为 NULL(,您将无法执行此操作:

queueHead->ppl = node;
queueHead->next = NULL;

访问queueHead->ppl会导致seg fault。问题是queueHead是一个指针,需要指向有效的内存位置。

因此,请尝试:

Queue *queueHead = new Queue;

此外,请考虑使用智能指针类,例如std::unique_ptr用于管理指针/内存。您已经忘记了程序中的delete(希望这能说服您(。

相关内容

  • 没有找到相关文章

最新更新