用递归方法创建一个带头结点的单链表
时间: 2024-05-02 14:19:55 浏览: 97
带头结点的单链表创建
好的,这是一个编程问题,我可以为您提供答案。
递归方法创建一个带头结点的单链表可以通过以下代码实现:
```
#include<stdio.h>
#include<stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node;
void create_list(Node *head) {
int num;
printf("输入节点值(输入-1结束):");
scanf("%d", &num);
if (num == -1) {
return;
}
Node *p = (Node *)malloc(sizeof(Node));
p->data = num;
p->next = head->next;
head->next = p;
create_list(head);
}
void print_list(Node *head) {
Node *p = head->next;
printf("输出单链表:");
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
Node *head = (Node *)malloc(sizeof(Node));
head->next = NULL;
create_list(head);
print_list(head);
return 0;
}
```
在这个例子中,我们首先定义了一个结构体`Node`来表示带有整数数据和一个指向下一个节点的指针的链表节点。然后我们定义了两个函数`create_list`和`print_list`,用于创建和打印带头结点的单链表。`create_list`函数是一个递归函数,它通过输入数字来创建链表。如果输入数字为-1,则链表创建结束。否则,它将创建一个新节点,并将其插入到链表的头部。`print_list`函数遍历链表并打印其内容。最后,在`main`函数中,我们创建了一个带头结点的链表,并打印了其内容。
希望这可以解决您的问题。
阅读全文