#include<stdio.h> #include<strlib.h> typedef struct node{ ElemType data[size]; struct node *next; }LinkList; int main(){ LinkList *list,*p; int j; for(j=3;j>0;j--){ scanf("%s",list->data); list=list->next; } p=list->next; for(int i=0;i<3;i++){ printf("%s ",p->data); p=p->next; } putchar('\n'); return 0; }
时间: 2024-04-10 19:27:37 浏览: 87
这段代码存在一些问题。首先,它包含了一个未定义的 `ElemType` 类型。其次,`strlib.h` 库应该是 `string.h` 库的拼写错误。另外,在循环中,`list` 指针没有初始化,所以在使用它之前需要先分配内存。最后,链表的创建和数据的读取部分逻辑上存在问题。
下面是修复后的代码:
```c
#include <stdio.h>
#include <string.h>
#define size 100
typedef struct node{
char data[size];
struct node *next;
} LinkList;
int main(){
LinkList *list = NULL;
LinkList *p = NULL;
char input[size];
for(int j = 3; j > 0; j--){
scanf("%s", input);
// 分配内存给新的节点
LinkList *newNode = (LinkList*)malloc(sizeof(LinkList));
// 将输入的数据复制到节点中
strcpy(newNode->data, input);
// 将新节点插入到链表的头部
newNode->next = list;
list = newNode;
}
p = list;
for(int i = 0; i < 3; i++){
printf("%s ", p->data);
p = p->next;
}
putchar('\n');
return 0;
}
```
这样修复后的代码将会按逆序读取 3 个字符串,并打印出来。请注意,在使用 `malloc` 分配内存后,需要在程序结束时释放链表的内存。
阅读全文