前插法生成链表时总是插入一个0怎么解决
时间: 2024-03-22 08:38:21 浏览: 54
shiyan.rar_链表生成 删除
前插法生成链表时,插入一个0通常是为了方便处理链表的头结点。如果不想在链表开头插入0,可以采用后插法生成链表,即先创建一个空链表,然后将新节点插入到链表的末尾。具体实现可以参考以下代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node *next;
};
struct Node *createList() {
struct Node *head = NULL;
struct Node *tail = NULL;
int x;
while (scanf("%d", &x) == 1) {
struct Node *newNode = (struct Node *)malloc(sizeof(struct Node));
newNode->data = x;
newNode->next = NULL;
if (head == NULL) {
head = newNode;
tail = newNode;
} else {
tail->next = newNode;
tail = newNode;
}
}
return head;
}
void printList(struct Node *head) {
struct Node *p = head;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
struct Node *head = createList();
printList(head);
return 0;
}
```
在上面的代码中,我们先创建一个空链表,然后通过循环读入用户输入的数据,将新节点插入到链表的末尾。这样就可以避免在链表开头插入0的问题。
阅读全文