好的写个C语言的单链表
时间: 2023-11-23 21:02:12 浏览: 31
下面是一个简单的 C 语言单链表的实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
// 创建链表节点
ListNode *createNode(int val) {
ListNode *newNode = (ListNode *)malloc(sizeof(ListNode));
newNode->val = val;
newNode->next = NULL;
return newNode;
}
// 向链表末尾添加节点
void addNode(ListNode **head, int val) {
ListNode *newNode = createNode(val);
if (*head == NULL) {
*head = newNode;
} else {
ListNode *curr = *head;
while (curr->next != NULL) {
curr = curr->next;
}
curr->next = newNode;
}
}
// 输出链表
void printList(ListNode *head) {
ListNode *curr = head;
while (curr != NULL) {
printf("%d ", curr->val);
curr = curr->next;
}
printf("\n");
}
int main() {
ListNode *head = NULL;
addNode(&head, 1);
addNode(&head, 2);
addNode(&head, 3);
addNode(&head, 4);
printList(head);
return 0;
}
```
这段代码定义了一个 `ListNode` 结构体来表示链表节点,其中包含一个 `val` 域来存储节点的值,以及一个 `next` 域指向链表中的下一个节点。`createNode` 函数用于创建一个新的节点,`addNode` 函数用于向链表末尾添加一个新的节点,`printList` 函数用于输出链表中所有节点的值。在 `main` 函数中,我们创建了一个空的链表头 `head`,并向其中添加了四个节点。最后调用 `printList` 函数输出整个链表。