链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针,链表具有动态分配、可扩展性强的特点,适用于存储有序的数据 *** 。

C语言版链表数据结构  第1张

链表结构

链表由多个节点组成,每个节点包含数据域和指针域,数据域用于存储节点中的数据,指针域用于指向下一个节点,链表的头节点通常不包含指针域,而是作为链表的入口点。

链表操作

链表支持常见的操作,如插入、删除、查找和遍历等。

1、插入操作:在链表的末尾或指定位置插入新的节点。

2、删除操作:删除指定节点。

3、查找操作:根据节点中的数据查找指定节点。

4、遍历操作:从头节点开始,依次访问每个节点的数据域,实现链表的遍历。

链表实现

下面是一个简单的链表实现示例:

#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
    int data;
    struct Node* next;
} Node;
// 创建新节点
Node* createNode(int data) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}
// 在链表末尾插入新节点
void insertAtEnd(Node** head, int data) {
    Node* newNode = createNode(data);
    if (*head == NULL) {
        *head = newNode;
        return;
    }
    Node* last = *head;
    while (last->next != NULL) {
        last = last->next;
    }
    last->next = newNode;
}
// 遍历链表并输出数据
void traverse(Node* head) {
    while (head != NULL) {
        printf("%d ", head->data);
        head = head->next;
    }
    printf("\n");
}
int main() {
    Node* head = NULL; // 链表头节点指针
    insertAtEnd(&head, 1); // 在链表末尾插入节点 1
    insertAtEnd(&head, 2); // 在链表末尾插入节点 2
    insertAtEnd(&head, 3); // 在链表末尾插入节点 3
    traverse(head); // 遍历链表并输出数据 1 2 3
    return 0;
}