追加在 C++ 中的数组链表中不起作用



这是我的类

class NumberList
{
private:
   // Declare a structure for the list
   struct ListNode
   {
      double value[10];           // The value in this node
      struct ListNode *next;  // To point to the next node
   }; 
   ListNode *head;            // List head pointer
public:
   // Constructor
   NumberList()
      { head = nullptr; }
   // Destructor
   ~NumberList();
   // Linked list operations
   void appendNode(double []);
   void insertNode(double []);
   void deleteNode(double []);
   void displayList() const;
};

这是我的追加函数,我无法让它工作 - 我不断收到错误消息。

void NumberList::appendNode(double num[])
{
   ListNode *newNode;  // To point to a new node
   ListNode *nodePtr;  // To move through the list
   // Allocate a new node and store num there.
   newNode = new ListNode;
   newNode->value = num;
   newNode->next = nullptr;
   // If there are no nodes in the list
   // make newNode the first node.
   if (!head)
      head = newNode;
   else  // Otherwise, insert newNode at end.
   {
      // Initialize nodePtr to head of list.
      nodePtr = head;
      // Find the last node in the list.
      while (nodePtr->next)
         nodePtr = nodePtr->next;
      // Insert newNode as the last node.
      nodePtr->next = newNode;
   }
}

错误信息:

prog.cpp: In member function ‘void NumberList::appendNode(double*)’: prog.cpp:40:19: error: incompatible types in assignment of ‘double*’ to ‘double [10]’ newNode->value = num;

关于我做错了什么的任何建议?

void NumberList::appendNode(double num[])num参数的类型实际上是一个指针 (= double* ),而不是具有定义数量的元素的数组。

在您的结构中使用std::array<double,10>并作为appendNode参数将是一个很好的解决方案。

这:

struct ListNode
{
  double value[10];
...

成为:

struct ListNode
{
  std::array<double,10> value;
...

您的函数参数将声明为:

void appendNode(const std::array<double,10>& num);

newNode->value = num;不需要改变。

相关内容

  • 没有找到相关文章

最新更新