c语言建立一个带头结点的单链表且生成一个数据结点。
时间: 2024-05-13 15:13:49 浏览: 107
以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node* next;
} Node;
Node* createNode(int data) {
Node* node = (Node*) malloc(sizeof(Node));
node->data = data;
node->next = NULL;
return node;
}
void printList(Node* head) {
Node* curr = head->next;
while (curr != NULL) {
printf("%d ", curr->data);
curr = curr->next;
}
printf("\n");
}
int main() {
// 创建头结点
Node* head = createNode(0);
// 添加数据结点
Node* node1 = createNode(1);
Node* node2 = createNode(2);
Node* node3 = createNode(3);
head->next = node1;
node1->next = node2;
node2->next = node3;
// 打印链表
printList(head);
// 释放内存
free(node3);
free(node2);
free(node1);
free(head);
return 0;
}
```
在这个示例中,我们首先定义了一个节点结构体 `Node`,其中包含一个整型数据 `data` 和一个指向下一个节点的指针 `next`。
接着,我们定义了一个 `createNode` 函数,用于创建一个新的节点并返回其指针。该函数接受一个整型参数 `data`,并将其赋值给新节点的 `data` 成员变量。同时,指针 `next` 被初始化为 `NULL`。
然后,我们定义了一个 `printList` 函数,用于打印链表中所有节点的数据。该函数接受一个指向头结点的指针 `head`,并从头结点的下一个节点开始遍历整个链表,依次打印每个节点的数据。
在 `main` 函数中,我们首先创建了一个头结点,并将其数据初始化为 `0`。然后,我们创建了三个数据节点 `node1`、`node2` 和 `node3`,并将它们添加到链表中。最后,我们调用 `printList` 函数打印链表中所有节点的数据,并释放了所有节点的内存。
运行该程序,输出结果如下:
```
1 2 3
```
阅读全文