请问我下面这段测试代码有什么问题啊,谢谢,c语言的

来源:百度知道 编辑:UC知道 时间:2024/09/24 13:27:35
#include <stdio.h>;
typedef int ElemType;

typedef struct LNode {
ElemType data;
struct LNode *next;
} LNode, *LinkList;

int init(LinkList L) {
L = (LNode*)malloc(sizeof(LNode));
L->next = NULL;
printf(L->data);
return 1;
}

void main() {
int a;
LNode* first;
LinkList first;
init(first);
a = (int)first->data;
printf("%d\n", a);

}

为什么一运行就停止工作呢

>正在编译...
1>test.c
1>.\test.c(1) : warning C4067: 预处理器指令后有意外标记 - 应输入换行符
1>.\test.c(12) : warning C4047: “函数”: “const char *”与“ElemType”的间接级别不同
1>.\test.c(12) : warning C4024: “printf”: 形参和实参 1 的类型不同
1>.\test.c(19) : error C2086: “LNode *first”: 重定义
1> .\test.c(18) : 参见“first”的声明
这个是把你的代码弄在编译器里面给出的错误
要学会看编译器给出的错和警告,学会调试程序
老实说 你代码错误太多,先说几个简单的的吧
带有#是预处理,结尾是不需要分号的;
还有这里typedef struct LNode {
ElemType data;
struct LNode *next;
} LNode,你用struct LNode的别名弄成LNode也有问题,
还你定义的函数int init()我想是初始化这个链表吧,不过你里面很有问题,还有就是指针应用也有问题
建议你先熟悉哈c语言,在来搞数据结构,老实说你c语言的基础都有问题,如果你要这个链表操作的源代码,我可以给你贴一份,我自己写的,不过建议你还是先把基础搞懂

以上建议虽然不中听,但是有用!
如果需要参考代码,请看我的空间里

int init(LinkList L) {
L = (LNode*)malloc(sizeof(LNode));
L->next = NULL;
printf(L->data);
return 1;
}

这个函数有问题啊,这个时候L->data还没初始化,你就开始打印了,而且把int 做为printf函数的参数也不对吧。
<