测试 LinkedLists 时 VS2010 编译错误

发布于 2024-09-15 20:27:29 字数 1226 浏览 2 评论 0原文

我正在对 LinkedList 进行一些测试,它有两个指针:一个指向列表中的下一项,另一个指向列表中的随机节点。

这是代码:

struct Node
{
   Node* pNext;      // a pointer to the next node in the list
   Node* pReference; // a pointer to a random node within the list
   int   number;     // an integer value
};

/**
 * This version works for small/medium lists, using recursion.
 */

Node* duplicateList(Node* n)
{
  if (n == NULL) return NULL;

  return new Node()
  {
     number  = n->number,
     pNext  = duplicateList(n->pNext),
     pReference = duplicateList(n->pReference)
  };
} 

我收到以下错误(VS2010):

d:\dornad\my Documents\visual studio 2010\projects\test\test.cpp(21): 错误 C2143: 语法错误:缺少 ' ;'在“{”之前

1>d:\dornad\my Documents\Visual Studio 2010\projects\test\test.cpp(22): 错误 C2065: 'number' : 未声明的标识符

<代码>1>d:\dornad\my Documents\Visual Studio 2010\projects\test\test.cpp(23): 错误 C2065: 'pNext': 未声明的标识符

1>d:\dornad\我的文档\ Visual Studio 2010 \ Projects \ test \ test.cpp(24):错误C2065:'pReference':未声明的标识符

1> d:\dornad \我的文档\ Visual Studio 2010 \项目\ test\test.cpp(25): 错误 C2143: 语法错误: 缺少 ';'在“}”之前

谢谢。

I'm doing some tests to a LinkedList, that has two pointers: one point to the next item in the list and the other point to a random node within the list.

Here is the code:

struct Node
{
   Node* pNext;      // a pointer to the next node in the list
   Node* pReference; // a pointer to a random node within the list
   int   number;     // an integer value
};

/**
 * This version works for small/medium lists, using recursion.
 */

Node* duplicateList(Node* n)
{
  if (n == NULL) return NULL;

  return new Node()
  {
     number  = n->number,
     pNext  = duplicateList(n->pNext),
     pReference = duplicateList(n->pReference)
  };
} 

I'm getting the following errors (VS2010):

d:\dornad\my documents\visual studio 2010\projects\test\test.cpp(21): error C2143: syntax error : missing ';' before '{'

1>d:\dornad\my documents\visual studio 2010\projects\test\test.cpp(22): error C2065: 'number' : undeclared identifier

1>d:\dornad\my documents\visual studio 2010\projects\test\test.cpp(23): error C2065: 'pNext' : undeclared identifier

1>d:\dornad\my documents\visual studio 2010\projects\test\test.cpp(24): error C2065: 'pReference' : undeclared identifier

1>d:\dornad\my documents\visual studio 2010\projects\test\test.cpp(25): error C2143: syntax error : missing ';' before '}'

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只为守护你 2024-09-22 20:27:29

该位不是有效的 C++:

return new Node()
{
  number  = n->number,
  pNext  = duplicateList(n->pNext),
  pReference = duplicateList(n->pReference)
};

将其更改为:

Node* pNode = new Node();
pNode->number  = n->number;
pNode->pNext  = duplicateList(n->pNext);
pNode->pReference = duplicateList(n->pReference);

return pNode;

This bit is not valid C++:

return new Node()
{
  number  = n->number,
  pNext  = duplicateList(n->pNext),
  pReference = duplicateList(n->pReference)
};

Change it to this:

Node* pNode = new Node();
pNode->number  = n->number;
pNode->pNext  = duplicateList(n->pNext);
pNode->pReference = duplicateList(n->pReference);

return pNode;
世态炎凉 2024-09-22 20:27:29

向 Node 添加一个构造函数:

struct Node
{
   Node(Node* next, Node* ref, int number) : pNext(next), pReference(ref), number(number) { }

   // ...
};

然后

return new Node(a, b, c);

Add a constructor to Node:

struct Node
{
   Node(Node* next, Node* ref, int number) : pNext(next), pReference(ref), number(number) { }

   // ...
};

then

return new Node(a, b, c);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文