c ++函数中链表的大小

时间:2010-10-13 23:41:45

标签: c++ linked-list

有人可以告诉我们检查链表大小(节点数)的代码是什么。这就是我的代码(插入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();
}; 

5 个答案:

答案 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;
}