#include <stdio.h> #include <stdlib.h>

typedef struct Node { int data; struct Node *next; } Node;

typedef struct LinkedList { Node *head; int size; } LinkedList;

LinkedList *createLinkedList() { LinkedList *list = malloc(sizeof(LinkedList)); list->head = NULL; list->size = 0; return list; }

void add(LinkedList *list, int data) { Node *newNode = malloc(sizeof(Node)); newNode->data = data; newNode->next = NULL;

if (list->head == NULL) {
    list->head = newNode;
} else {
    Node *current = list->head;
    while (current->next != NULL) {
        current = current->next;
    }
    current->next = newNode;
}
list->size++;

}

void printList(LinkedList *list) { Node *current = list->head; while (current != NULL) { printf("%d ", current->data); current = current->next; } printf("\n"); }

int main() { LinkedList *list = createLinkedList(); add(list, 1); add(list, 2); add(list, 3); printList(list); return 0; }

该代码定义了两个数据结构类型:'Node'和'LinkedList'。其中,'Node'表示链表中的节点,包含一个'data'成员和一个指向下一个节点的指针'next'成员。'LinkedList'表示整个链表,包含一个指向头节点的指针'head'和链表中节点的数量'size'成员。

在'createLinkedList()'函数中,我们使用'malloc()'动态分配内存,创建一个新的'LinkedList'结构体,并将'head'和'size'成员初始化为'NULL'和'0'。

在'add()'函数中,我们创建一个新的'Node'节点,并将'data'成员设置为传入的参数'data'。如果链表为空,则将新节点设置为头节点;否则,遍历链表,找到最后一个节点,并将其'next'指针指向新节点。最后,将链表中节点的数量'size'加1。

'printList()'函数用于遍历链表,并依次输出每个节点的数据成员。

在'main()'函数中,我们创建一个新的链表,并依次向其中添加三个节点,然后调用'printList()'函数输出链表中的所有节点数据。

C语言数据结构:链表实现示例

原文地址: http://www.cveoy.top/t/topic/mJEu 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录