用C语言逆向建立动态链表,返回链表头指针head
时间: 2023-07-10 14:26:46 浏览: 146
以下是用C语言逆向建立动态链表并返回链表头指针head的代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct Node {
int data;
struct Node* next;
};
struct Node* createNode(int data) {
struct Node* node = (struct Node*) malloc(sizeof(struct Node));
node->data = data;
node->next = NULL;
return node;
}
struct Node* createList() {
struct Node* head = NULL;
int data;
while (1) {
printf("Enter a number (0 to end): ");
scanf("%d", &data);
if (data == 0) {
break;
}
struct Node* node = createNode(data);
node->next = head;
head = node;
}
return head;
}
void traverseList(struct Node* head) {
struct Node* p = head;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
void destroyList(struct Node* head) {
struct Node* p = head;
while (p != NULL) {
struct Node* q = p;
p = p->next;
free(q);
}
}
int main() {
struct Node* head = createList();
traverseList(head);
destroyList(head);
return 0;
}
```
在 createList() 函数中,我们使用 while 循环逆向建立链表。首先,我们初始化 head 为 NULL,表示链表为空。然后,循环读取用户输入的数字,每读取一个数字,我们就创建一个新的节点,将它的 next 指向 head,然后将 head 指向新的节点。这样,我们就成功地逆向建立了链表。
最后,我们将链表的头指针 head 返回,以便在主函数中遍历链表、销毁链表等操作。
阅读全文