int main() { int n, m,i,j; printf("输入点数:"); scanf("%d",&n); printf("输入边数:"); scanf("%d",&m); for (i = 0; i < n; i++) { LinkList L = InitList(); creatList(L); } printList(L); }这段C语言代码怎么把最后的几个链表集体打印
时间: 2024-03-16 13:47:38 浏览: 112
这段代码有一个问题,变量L只在for循环内部定义,无法在循环外部访问,因此无法将所有链表集体打印。正确的做法应该是将所有链表存储在数组中,然后再循环遍历数组打印。
以下是修改后的代码:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node, *LinkList;
LinkList InitList() {
LinkList L = (LinkList) malloc(sizeof(Node));
L->next = NULL;
return L;
}
void creatList(LinkList L) {
int data;
printf("请输入节点的值,以-1结束:");
while (1) {
scanf("%d", &data);
if (data == -1) {
break;
}
Node *node = (Node*) malloc(sizeof(Node));
node->data = data;
node->next = NULL;
Node *p = L;
while (p->next) {
p = p->next;
}
p->next = node;
}
}
void printList(LinkList L) {
Node *p = L->next;
while (p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
int n, m, i, j;
printf("输入点数:");
scanf("%d", &n);
printf("输入边数:");
scanf("%d", &m);
LinkList *lists = (LinkList*) malloc(sizeof(LinkList) * n);
for (i = 0; i < n; i++) {
lists[i] = InitList();
creatList(lists[i]);
}
for (i = 0; i < n; i++) {
printf("链表%d: ", i + 1);
printList(lists[i]);
}
return 0;
}
```
这段代码将链表存储在了一个链表数组中,最后循环遍历数组打印每个链表。
阅读全文