单向链表(slist.h/.c)
适合轻量场景,接口极简。
- // slist.h
- #ifndef SLIST_H
- #define SLIST_H
- typedefstruct slist_node {
- void *data;
- struct slist_node *next;
- } slist_node_t;
- voidslist_push_front(slist_node_t **head, void *data);
- voidslist_free(slist_node_t *head);
- #endif
- // slist.c
- #include "slist.h"
- #include <stdlib.h>
- voidslist_push_front(slist_node_t **head, void *data) {
- slist_node_t *node = malloc(sizeof(slist_node_t));
- node->data = data; node->next = *head; *head = node;
- }
- voidslist_free(slist_node_t *head) {
- while (head) { slist_node_t *tmp = head; head = head->next; free(tmp); }
- }
|