C语言链表创建、插入节点及遍历详解

链表是一种常用的数据结构,它由一系列节点组成,每个节点包含数据域和指针域,指针域指向下一个节点。本文将介绍如何在 C 语言中创建链表、插入节点以及遍历链表,并提供代码示例和详细解释。

1. 定义链表节点

首先,我们需要定义链表节点的结构体。每个节点包含两个部分:数据域和指针域。数据域用于存储数据,指针域用于指向下一个节点。

typedef struct p {
    int number;
    struct p *next;
} List;

2. 创建链表

创建链表的第一步是创建头节点。头节点不存储数据,它的作用是指向链表的第一个节点。

List *head = NULL;

3. 插入节点

要向链表中插入节点,我们需要创建一个新的节点,并将它的数据域设置为要插入的值,指针域设置为 NULL。然后,我们需要将新节点连接到链表中。

以下代码演示了如何在链表尾部插入节点:

List *add(List *tail, int i) {
    List *t = (List *)malloc(sizeof(List));
    t->number = i;
    t->next = NULL;

    if (tail == NULL) {
        // 如果链表为空,则将新节点设置为头节点
        head = t;
    } else {
        // 否则,将新节点连接到链表尾部
        tail->next = t;
    }

    return t; // 返回新节点,作为新的尾节点
}

4. 遍历链表

遍历链表是指依次访问链表中的每个节点。我们可以使用循环结构来遍历链表,从头节点开始,每次访问一个节点,直到访问到最后一个节点。

以下代码演示了如何遍历链表并打印每个节点的数据:

void printList(List *head) {
    List *q = head;
    while (q != NULL) {
        printf('%d	', q->number);
        q = q->next;
    }
    printf('
');
}

5. 完整代码示例

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

typedef struct p {
    int number;
    struct p *next;
} List;

List *head = NULL;

List *add(List *tail, int i);
void printList(List *head);

int main() {
    int i;

    // 创建链表
    List *tail = NULL;
    do {
        scanf('%d', &i);
        if (i != -1) {
            tail = add(tail, i);
        }
    } while (i != -1);

    // 遍历链表并打印每个节点的数据
    printList(head);

    return 0;
}

List *add(List *tail, int i) {
    List *t = (List *)malloc(sizeof(List));
    t->number = i;
    t->next = NULL;

    if (tail == NULL) {
        // 如果链表为空,则将新节点设置为头节点
        head = t;
    } else {
        // 否则,将新节点连接到链表尾部
        tail->next = t;
    }

    return t; // 返回新节点,作为新的尾节点
}

void printList(List *head) {
    List *q = head;
    while (q != NULL) {
        printf('%d	', q->number);
        q = q->next;
    }
    printf('
');
}

6. 总结

本文介绍了在 C 语言中创建链表、插入节点以及遍历链表的方法,并提供了代码示例和详细解释。链表是一种常用的数据结构,掌握链表的操作方法对于学习数据结构和算法非常重要。

C语言链表创建、插入节点及遍历详解

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

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