C ++链表是isEmpty函数

时间:2018-04-20 05:41:54

标签: c++ linked-list is-empty

我想检查一下C ++中的链表是否为空。我有以下课程:

class IntLinkedList
{
    private:
        struct LinkedListNode        // Structure for linked list
        {
            int value;
            struct LinkedListNode *next;
        };
        LinkedListNode *head;       // List head pointer

    public:
        IntLinkedList(void)         // Constructor
        { head = NULL; }

        ~IntLinkedList(void);       // Destructor
        void AppendNode(int);
        void InsertNode(int);
        void DeleteNode(int);
        void DisplayList(void);
        bool isEmpty(LinkedListNode*);
};  

// isEmpty function
bool IntLinkedList::isEmpty(LinkedListNode *node)
{
    bool status;
    node = head;
    if ( node->next == NULL )
        status = true;
    else
        status = false;
    return status;  
}  

但我不能通过同一类的对象在其他类中使用此函数。

如何使用函数检查空列表,该列表可以通过同一个类的对象在另一个类中访问?

2 个答案:

答案 0 :(得分:2)

您获得的错误是由于您将函数声明为bool isEmpty(LinkedListNode),但您尝试将其定义为bool isEmpty(LinkedListNode*)。不同之处在于,在定义中你有一个指针,而在声明中只有一个对象。你必须选择一个,因为这些是完全不同的东西。

那就是说,我根本不明白为什么你需要这个论点来检查你的名单是否为空。只需完全删除参数并使用if ( head->next == NULL ) - 总是通过类的实例调用非静态成员函数。

为了完整起见,head指向列表中的第一项,因此为了检查列表中是否有任何内容,您应检查它是否为空指针:

bool IntLinkedList::isEmpty() const
{   //added const for const-correctness, should be added to declaration as well
    return head == nullptr;
}

答案 1 :(得分:0)

关注list.empty()

  

返回列表容器是否为空(即其大小是否为空)   0)。

两个建议:

size变量检查列表中的节点数,这样isEmpty()只是return size == 0;

或者在您当前的实现中,只需修改为:

bool isEmpty() {
   return head == null; // if head is null, there's no node in list
}