#include<stdio.h> #include<stdlib.h> typedef struct Node { int data; struct Node *next; }Node; int strlen(Node *p,int k) { int i,j; while(p!=NULL) { p=p->next; i++; } j=i-k; return j; } Node * fun(Node *h, int x, int k) { Node * p; Node * h1=h; int i; p=(Node*)malloc(sizeof(Node)); p->data=x; p->next=NULL; strlen(h,k); for(i=0;i<k-1;h1=h1->next) ; p->next=h1->next; h1=p; return h1; } void print(Node * p) { for(;p!=NULL;p=p->next) ; printf("%d\n",p->data); } int main(void) { Node * h1=NULL; Node n1,n2,n3,n4; n1.data=10; n2.data=20; n3.data=5; n4.data=15; h1=&n1; n1.next=&n2; n2.next=&n3; n3.next=&n4; n4.next=NULL; fun(h1, 12,2); print(h1); return 0; }为什么报错
时间: 2024-03-29 08:37:22 浏览: 32
在代码中,有一个函数 `strlen`,但是这个函数与 C 标准库中的同名函数重名了,导致编译器无法识别。建议更改函数名,或者将该函数内部使用的变量 `i` 初始化为0。此外,`fun` 函数中的循环也有问题,应该将 `i` 的初始值设为1,每次循环 `i` 都要加1。最后,`fun` 函数中的 `h1=p;` 应该改为 `h1=p->next;`。
相关问题
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 typedef int ElemType; typedef struct
这段代码是C语言中的头文件引用和一些定义的示例。其中,`#include <stdio.h>`和`#include <stdlib.h>`是用来引入标准库函数的头文件。`stdio.h`包含了输入输出相关的函数,如`printf`和`scanf`;`stdlib.h`包含了一些常用的函数,如内存分配函数`malloc`和随机数生成函数`rand`。
`#define MAXSIZE 100`是一个宏定义,用来定义一个常量`MAXSIZE`,它的值为100。
`typedef int ElemType;`是用来给`int`类型起一个别名`ElemType`,方便在代码中使用。
至于代码中的结构体部分,由于你没有提供完整的代码,所以无法给出具体的解释。但一般来说,结构体用于定义一种自定义的数据类型,可以包含多个不同类型的成员变量。
#include <stdio.h> #include <stdlib.h> typedef int ElemType; typedef struct LNode { ElemType da
`#include <stdio.h>`和`#include <stdlib.h>`是C语言中的两个头文件。`<stdio.h>`是标准输入输出头文件,提供了一些用于输入输出的函数和宏定义。`<stdlib.h>`是标准库头文件,提供了一些常用的函数和宏定义,如内存分配、随机数生成等。
在你的代码中,`typedef int ElemType;`定义了一个类型别名,将`int`类型命名为`ElemType`。
`typedef struct LNode`定义了一个结构体类型`LNode`,结构体是一种自定义的数据类型,可以包含多个不同类型的成员变量。在这里,`LNode`结构体中的成员变量还没有完整定义,因此代码截断了。