请对以下代码进行修改#include<stdio.h> #include<math.h> #include<malloc.h> #include<stddef.h> #define OK 1 #define FALSE 0 typedef int Status; typedef int Elemtype; typedef struct LNode { Elemtype data; struct LNode* next; }LNode,*LinkList; LinkList L; Status InitList(LinkList*L) { L = (LinkList)malloc(sizeof(LNode)); L->next = NULL; return OK; }
时间: 2024-03-24 22:39:32 浏览: 113
C-language-function-table.rar_c语言中的table_tablec语言_table函数c
这段代码的问题在于,`LinkList L`在全局作用域中定义,而在`InitList()`函数中又重新定义了一个`LinkList`类型的指针`L`,这会导致程序出现错误。应该将`LinkList L`的定义移动到`main()`函数中,并将其作为参数传递给`InitList()`函数。同时,函数返回值应该是`LinkList`类型的指针。
修改后的代码如下:
```
#include <stdio.h>
#include <math.h>
#include <malloc.h>
#include <stddef.h>
#define OK 1
#define FALSE 0
typedef int Status;
typedef int Elemtype;
typedef struct LNode {
Elemtype data;
struct LNode* next;
} LNode, *LinkList;
Status InitList(LinkList* L) {
*L = (LinkList)malloc(sizeof(LNode));
(*L)->next = NULL;
return OK;
}
int main() {
LinkList L;
InitList(&L);
return 0;
}
```
这里将`LinkList L`的定义移动到了`main()`函数中,并将其传递给`InitList()`函数。同时,函数返回值改为指向`LinkList`类型的指针。在`main()`函数中,我们调用`InitList()`函数来初始化链表,然后程序正常结束。
阅读全文