无法使用类型为“结构节点*”的左值初始化“结构节点*”的参数

时间:2019-10-24 09:00:46

标签: c++

我仍然不知道我的代码有什么问题。

我只想从链表类中调用insertInEmpty和insertAtBegin来传递指针的最后一个和某些整数。

我很困惑,需要一些纠正方法的帮助...非常感谢您的帮助!!谢谢!!

struct Node *last = nullptr;

 last = linkedlist::insertInEmpty(last,5);   <---- error on last parameter
 last = linkedlist::insertAtBegin(last,4);   <---- error on last parameter

linkedlist.h

#ifndef LINKEDLIST_H
#define LINKEDLIST_H

class linkedlist
{
    public:
        struct Node;

        static struct Node *insertInEmpty(struct Node *last, int new_data);

        static struct Node *insertAtBegin(struct Node *last, int new_data);

};

#endif // LINKEDLIST_H

linkedlist.cpp

#include "linkedlist.h"

struct Node
{
    int data;
    struct Node *next;
};

struct Node *insertInEmpty(struct Node *last, int new_data)
{
   // if last is not null then list is not empty, so return
   if (last != nullptr)
   return last;

   // allocate memory for node
   struct Node *temp = new Node;

   // Assign the data.
   temp -> data = new_data;
   last = temp;

   // Create the link.
   last->next = last;

   return last;
}

//insert new node at the beginning of the list
struct Node *insertAtBegin(struct Node *last, int new_data)
{
   //if list is empty then add the node by calling insertInEmpty
   if (last == nullptr)
   return insertInEmpty(last, new_data);

   //else create a new node
   struct Node *temp = new Node;

   //set new data to node
   temp -> data = new_data;
   temp -> next = last -> next;
   last -> next = temp;

   return last;
}




1 个答案:

答案 0 :(得分:2)

您的struct Nodelinkedlist中的内部结构。
使用linkedlist::Node *last = nullptr;或将其移出。
您的cpp文件还应将linkedlist::范围用于Node的实现,否则会出现链接问题。