为什么我在以下计算链表中元素数量的代码中少计算一个

阿拜

我无法弄清楚为什么我在下面定义的 len() 函数中少计数 1。len() 函数应该计算我的链表中元素的数量。

struct node {
    int data;
    struct node* link;
};

typedef struct node node;

node *root=NULL;

void append(void);
int len(void);

int main(void) {

    printf("\nCurrent length of list:\t%d\n",len());
    append();
    printf("\nCurrent length of list:\t%d\n",len());
    append();
    printf("\nCurrent length of list:\t%d\n",len());
    append();
    printf("\nCurrent length of list:\t%d\n",len());

    return 0;
}

void append(void) {

    node *tmp;

    tmp=(node *)malloc(sizeof(node));

    printf("\nEnter data value\t\n");
    scanf("%d", &tmp->data);
    tmp->link=NULL;

    if(root==NULL){
        root=tmp;
    }
    else{
        node *ptr=root;

        while(ptr->link!=NULL){
            ptr=ptr->link;
        }
        ptr->link=tmp;
    }
}
int len(void) {
    int cnt=0;

    if(root==NULL)
        return 0;

    node *tmp=root;

    while(tmp->link!=NULL){
        ++cnt;
        tmp=tmp->link;
    }
    return cnt;
}

列表的当前长度:0 // 调用 len(),预期输出:正确

输入数据值 20 // 调用 append()

列表的当前长度:0 // 调用 len(),预期输出:1

输入数据值 191 // 调用 append()

列表的当前长度:1 // 调用 len(),预期输出:2

输入数据值 22 // 调用 append()

列表的当前长度:2 // 调用 len(),预期输出:3

丹尼斯

你没有计算最后一个元素。尝试跟踪您的代码。

如果您的链表如下所示

elem1 -> elem2 -> elem3 -> NULL

您计算元素 1 和 2 但不计算 3,因为 3 的link字段为 NULL。

将您的代码更改为以下内容,它将起作用

int len(void){
    int cnt=0;

    node *tmp=root;

    while(tmp!=NULL){
        ++cnt;
        tmp=tmp->link;
    }
    return cnt;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

制作一个函数来计算C语言中PriorityQueue中的元素数量

计算数组中小于另一个数组中元素的元素数

如何计算int类型数组中的元素数量,其中0可以是一个元素?

如何计算流数据集中的数组字段中元素的数量(一个除外)?

编写一个函数来计算玫瑰树中元素的数量

计算要在一个屏幕上的元素的宽度和高度,元素数量未知

LinQ查询计算另一个对象列表中一个对象列表中元素的数量

用于计算数组中元素数量的标准宏

计算Python中数组中元素的数量

计算矩阵中每一行的元素数量

为什么我没有得到键中元素数量的正确 Len?

R ::我有一个向量列表,如何计算两个向量在所有组合中共有的元素数量?

一种计算另一个元素之间的元素数量并返回数组的方法

有效地计算一个列表中的元素数量少于其他某个列表中的元素

如何计算 XML 中的元素数量?

计算特定容器中的元素数量

如何计算 IEnumerator 中的元素数量?

计算向量中元素在另一个向量中的出现

计算对象中元素的数量

在对数据框的一列进行装箱后,如何制作一个新的数据框以计算每个箱中的元素数量?

为什么当我尝试使用python计算数组中的数字数量时,其中一个数组进行错误检查

为什么我的JS计算中不能放一个以上的点

如何使用 Selenium 和 Python 计算包含一个或多个相同类属性的元素数量?

为什么我的代码中的 '%' 会产生另一个数字而不是我在计算自己时得到的数字?

我需要一个Mysql查询来执行计算以输出以下代码

为什么我的算法不检查链表的最后一个元素?

为什么我的链表的delete_last_element删除第一个元素?

我在链表中添加了4个元素,但是为什么只显示了三个,而最后一个元素没有打印出来

我试图在 Python 中定义一个链表,但为什么它总是要添加第一个元素