好的,所以我正在完成一项学校作业。我找到了这个程序,我想用它来帮助我理解链表系统的工作原理。该特定程序应该创建链表,然后要求用户输入x和y对中的“点”。它将每个“点”存储在列表中的节点中,然后应该能够将它们全部打印出来。当我尝试编译它时,我得到2个错误,它告诉我,我无法从'int'转换为'node',我不知道为什么会这样说。看起来语法与书中的相同,所以我必须错过一个小细节。
另一方面,这个程序是我发现的一个随机的东西作为一个例子,所以如果可能的话,任何人都可以填写我如何让它在那里结束x和y coords吗?在评论中写道,它仍然需要完成。
以下是完整的错误消息:(错误发生在第44行和第67行,两行都表示“newNode-> info = input;”)
错误1错误C2440:'=':无法从'int'转换为'node *'
#include <iostream>
#include <list>
#include <cassert>
#include <ostream>
using namespace std;
struct node
{
node *info;
node *link;
int x, y;
};
node* getXandY();
int main()
{
return 0;
}//end main
node* getXandY()
{
node *newNode, *first, *last;
int input;
int count = 0;
cout << "Enter as many points as you like: (x,y)" << endl;
first = NULL;
do
{
//x integers
cout << "Enter an X value: ";
cin >> input;//read info
int x = input; //store info (x) into input
newNode = new node();//allocate memory for the type node
assert(newNode != NULL);//terminate program is no memory space
newNode->info = input;//copy value into input
newNode->link = NULL;
if (first == NULL)
{
first = newNode;
last = newNode;
}
else
{
last->link = newNode;
last = newNode;
}
//y integers
cout << "Enter an Y value: ";
cin >> input;//get info
int y = input;//store in for (y) into input
newNode = new node;//allocate memory for the type node
assert(newNode != NULL);//terminate program is no memory space
newNode->info = input;//copy value into input
newNode->link = NULL;
if (first == NULL)
{
first = newNode;
last = newNode;
}//end if
else
{
last->link = newNode;
last = newNode;
}//end else
}//end do
while (input != 999);
for (int i = 0; i < count; i++)
{
cout << "(" /*place code here x value <<*/ "," << /*place code here y value <<*/ ")" <<endl;
}//end for
getchar();
}
答案 0 :(得分:0)
程序错了,毫无意义。
至于错误,它发生在像这样的语句中
newNode->info = input;
数据成员info
的类型为node *
。查看信息的定义
node *info;
input
的类型为int
int input;
因此,编译器无法将类型为int
的对象分配给类型为node *
的对象。此外,变量输入是局部变量。所以在任何情况下这个代码都没有意义。
我会按以下方式定义列表
class list
{
public:
typedef size_t size_type;
typedef std::pair<int, int> value_type;
private:
struct node
{
node *next;
std::pair<int, int> point;
};
node *head = nullptr, *tail = nullptr;
size_type sz = 0;
public:
// Some special member functions and other methods as for example push_back or push_front
size_type size() const { return sz; }
//...
};