有人可以告诉我们检查链表大小(节点数)的代码是什么。这就是我的代码(插入nd删除头+所有节点的打印信息)
struct node
{
int info;
node *nextptr;
};
class list
{
private:
node *L,*tail;
int count;
public:
list()
{
L=tail=NULL;
count=0;
}
void InsertHead(int info);
int RemoveHead();
void Print();
};
答案 0 :(得分:6)
有两种方法可以管理链表的大小,两者都有缺点。最简单的方法是管理一个count变量,你的类有这样一个变量,每次你向列表中添加一个节点时都会增加它,并在每次删除一个节点时递减它。
在这种情况下,您可以在恒定时间内获取链表的大小。缺点是,一个有用的操作,拼接,你在一个列表中将它切成两个较小的列表位于中间,变成线性复杂性,因为现在你必须计算子列表中有多少个节点。
如果希望splice保持不变,则无法跟踪列表的大小。因此,只要您想获得列表的大小,就必须计算有多少节点。
答案 1 :(得分:5)
最简单的就是添加函数InsertHead add ++ count并在RemoveHead中添加--count
否则你可以使用循环来浏览列表
e.g。
node* p = L;
while (p != NULL)
{
++count;
p = p->nextptr;
}
答案 2 :(得分:1)
您需要创建一个计数器,然后循环浏览列表,增加计数器
伪代码:
count = 0
iterator = head
while(iterator != 0)
count++
iterator = iterator.next
答案 3 :(得分:0)
试试这个:
int size() { return count; }
答案 4 :(得分:0)
类似的东西:
int Count()
{
return count;
}