#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 10:37:22 浏览: 72
在代码中,有一个函数 `strlen`,但是这个函数与 C 标准库中的同名函数重名了,导致编译器无法识别。建议更改函数名,或者将该函数内部使用的变量 `i` 初始化为0。此外,`fun` 函数中的循环也有问题,应该将 `i` 的初始值设为1,每次循环 `i` 都要加1。最后,`fun` 函数中的 `h1=p;` 应该改为 `h1=p->next;`。
相关问题
# include < stdio. h> # include < stdlib. h> typedef int ElemType; typedef struct LNode { ElemType
这是一个C语言程序中的部分代码,涉及到头文件的包含和数据结构的声明。`#include <stdio.h>` 和 `#include <stdlib.h>` 是用来引入标准输入输出库以及标准库函数,如内存管理和I/O操作。
`typedef int ElemType;` 定义了一个新的类型别名 `ElemType`,通常在数据结构中用于元素类型,例如链表中的节点元素。
接着,`typedef struct LNode` 开始定义一个名为 `LNode` 的结构体,这通常是用来表示链表的节点。在链表中,每个节点一般包含两个部分:一个是存储数据的域(`ElemType data;`,这个部分会被 `ElemType` 替换),另一个可能是指向下一个节点的指针(`struct LNode* next;`)。完整的结构体可能会像这样:
```c
typedef int ElemType;
typedef struct LNode {
ElemType data; // 节点的数据域
struct LNode* next; // 指向下一个节点的指针
} LNode;
```
#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`,方便在代码中使用。
至于代码中的结构体部分,由于你没有提供完整的代码,所以无法给出具体的解释。但一般来说,结构体用于定义一种自定义的数据类型,可以包含多个不同类型的成员变量。
阅读全文