函数 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->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 调用落在错误函数上
返回中间节点;返回倒数k节点;判断是否为环形链表(返回入环第一个节点)