C++链表为空函数
C++ Linked List isEmpty Function
我想检查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;
}
但是我不能通过同一类的对象在其他类中使用这个函数。
如何使用可通过同一类的对象在另一个类中访问的函数来检查空列表?
您得到的错误是由于您将函数声明为 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;
}
在 list.empty()
之后
返回列表容器是否为空(即其大小是否为 0(。
两点建议:
有一个size
变量来检查列表中的节点数,这样您的isEmpty()
就return size == 0;
或者在您当前的实现中,只需修改为:
bool isEmpty() {
return head == null; // if head is null, there's no node in list
}
相关文章:
- 链表,反向函数,数据结构
- 链表的泛型函数remove()与成员函数remove)
- 链表中的 C++ 析构函数
- 为什么我的双向链表删除函数会删除多个节点?
- 在 c++ 中具有向量的双向链表构造函数
- C++析构函数被意外调用双链表
- 修改链表主函数代码,用户将在其中输入节点的索引和数据以及正确的消息
- 双链表的擦除值函数,未知错误
- 使用函数引用指向节点的指针删除链表中的节点?
- 使用析构函数释放链表
- 为什么将函数的返回类型从结构节点*更改为void后,链表的元素没有显示create_ll和显示?
- 指针永远不会在链表深层复制构造函数中达到 null
- 程序在为链表创建推送函数时崩溃
- C++嵌套的迭代器类(在链表类中)Insert_After函数
- 合并 2 个排序的链表。必需的成员函数 bool Merge(List342 &list1):
- 双链表堆栈删除函数不起作用
- 这是在传递 int num 时创建搜索函数的正确方法吗?使用链表库
- 复制链表的构造函数
- 将链表传递给函数并确保它未被修改
- C++弹出函数链表