gpt4 book ai didi

c - C语言中查找链表中的函数

转载 作者:行者123 更新时间:2023-11-30 20:59:19 27 4
gpt4 key购买 nike

我想编写一个关于链表的程序,它获取一个数字,如果该数字等于其中一个节点的数据,则给出该节点的编号。就像3个节点中的数据是

123
56
78

它得到一个像 56 这样的数字,它等于第二个节点的数据,所以输出应该是 2。

#include<stdio.h>

#include<stdlib.h>

struct node{

int data;

node *next;

};

node* cnode();

void find(node *first,int i,int d);

int main()
{

node *first,*last;

int n,i,x,d;

printf(" How many nodes ?\t");

scanf("%d",&x);

for(i=1;i<=x;i++){

last=cnode();

last->next=first;

first=last;

}

printf("\n enter a particular data:\t");

scanf("%d",&d);

printf("\n number of the particular node:\t");

find(first,i,d);

}

void find(node *first,int i,int d){

int count=0;

while (first != NULL)

{

if (first->data == d)

count++;

first = first->next;

}

if(count != 0){

printf("%d",count);

}

if(count == 0){

printf("\n NOT FOUND ! ");

}


}

最佳答案

根据 C 标准,不带参数的函数 main 应声明为

int main( void )

其次是结构声明

struct node{

int data;

node *next;

};

不是有效的 C 声明。

你应该写

struct node{

int data;

struct node *next;

};

typedef struct node node;

typedef struct node{

int data;

struct node *next;

} node;

您必须至少使用NULL初始化节点first。否则程序将出现未定义的行为。

node *first = NULL,*last;

函数find 中未使用参数i。因此它可能会被删除。

void find(node *first, int d);

函数定义至少看起来像

void find( node *first, int d )
{
int count = 0;

while ( first != NULL && first->data != d )
{
first = first->next;
++count;
}

if ( first != NULL )
{
printf("%d",count);
}
else
{
printf("\n NOT FOUND ! ");
}
}

关于c - C语言中查找链表中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47790915/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com