【发布时间】:2021-07-17 07:14:23
【问题描述】:
对于下面的 C++ 代码,我已经声明了一个名为“newNode”(node *newNode)的“node”结构的指针,并尝试输入一个 id # 并将其输入到 newNode->id 中。输入 id # 后,我收到一条错误消息,提示“已退出,分段错误”。我了解这意味着我们正在尝试访问我们无权访问的内存位置,但不知道如何解决此问题。我很感激任何反馈。谢谢。
#include <iostream>
using namespace std;
struct node
{
int id;
string name;
int age;
node *nxt;
};
node *head = NULL;
void InsertNode()
{
node *currentNode, *newNode, *nextNode;
cout << "You will now be prompted to enter the ID number, name, and age of a particular person..." << endl;
cout << "Enter ID number: ";
cin >> newNode->id;
cout << "Enter name: ";
cin >> newNode->name;
cout << "Enter age: ";
cin >> newNode->age;
currentNode = head;
while (currentNode != NULL)
{
if (newNode->id == currentNode->id)
{
cout << "The ID you entered was already assigned to another node. Please enter a different ID number for the node that you are inserting: " << endl;
cin >> newNode->id;
}else{
currentNode = currentNode->nxt;
}
}
if (head == NULL)
{
head = newNode;
}else{
currentNode = head;
while (currentNode != NULL)
{
nextNode = currentNode->nxt;
if (newNode->id < nextNode->id)
{
if(currentNode == head)
{
head = newNode;
newNode->nxt = nextNode;
}else if (nextNode->nxt == NULL && newNode->id > nextNode->id)
{
newNode->nxt = NULL;
nextNode->nxt = newNode;
}else{
newNode->nxt = nextNode;
}
}else{
currentNode = nextNode;
}
}
}
}
int main()
{
InsertNode();
return 0;
}
【问题讨论】:
-
如果你使用指针,你需要将它指向某个东西。
标签: c++ struct segmentation-fault