函数 my_find_node 返回第一个节点出现的地址

Posted

技术标签:

【中文标题】函数 my_find_node 返回第一个节点出现的地址【英文标题】:Function my_find_node that returns the address of the first node occurence 【发布时间】:2020-07-06 07:01:25 【问题描述】:

我需要帮助来根据这些说明编写函数:

编写一个名为 my_find_node 的函数,它返回的地址 第一个节点出现,其中包含与参考数据相等的数据。 如果没有找到这样的节点,应该返回NULL。

它的原型必须如下:

linked_list_t *my_find_node(linked_list_t *list, const int data_ref);

目前,我的代码由于某种原因无法编译。

我制作了一个名为 my_list.h 的头文件,其中包含:

    #ifndef __MYLIST__H__
    #define __MYLIST__H__

    typedef struct linked_list_t
    
    int x;
    struct linked_list_t *next;
    linked_list_t;

linked_list_t *my_find_node(linked_list_t *list, const int data_ref);

#endif

这是我的函数的声明:

#include <stdio.h>
#include <stdlib.h>
#include "mylib.h"


linked_list_t *my_find_node(linked_list_t *list, const int data_ref)
    
        linked_list_t *current = list;

        int count = 0;

        if(current == NULL)
            return (NULL);

    while (list != NULL)
    
        if (count == data_ref)
            return element;

        count++;
        current = current->next;
    
    return (NULL);

如果有人可以帮助我使其工作或给我任何线索,那就太好了! 谢谢

【问题讨论】:

【参考方案1】:

您的代码试图匹配列表中的第 N 个元素,而 匹配节点的内容/值。

另外,element 未定义。而且,你在做while (list != NULL),但在做current = current-&gt;next,所以实际上,你遇到了while (1)以及其他问题。

它实际上有点简单,基于问题定义(即包含数据等于参考数据)。这是一个稍微重构的版本:

linked_list_t *
my_find_node(linked_list_t *list,const int data_ref)

    linked_list_t *current;

    for (current = list;  current != NULL;  current = current->next) 
        if (current->x == data_ref)
            break;
    

    return current;

【讨论】:

以上是关于函数 my_find_node 返回第一个节点出现的地址的主要内容,如果未能解决你的问题,请参考以下文章

bug-004tcp网络断开重连后,客户端recv函数一直阻塞,不会返回

从节点 JavaScript 返回到 jQuery 的 Ajax 调用落在错误函数上

JavaScript常用DOM操作方法和函数

返回中间节点;返回倒数k节点;判断是否为环形链表(返回入环第一个节点)

返回中间节点;返回倒数k节点;判断是否为环形链表(返回入环第一个节点)

6-2 单链表元素定位 (12 分)