链表的尾插和头插是用来向链表中添加节点的两种常用方法。

尾插是将新节点添加到链表的末尾,即将新节点插入到链表的最后一个节点的后面。这种插入方式可以保持链表中节点的顺序不变,同时也方便获取链表的尾节点。

头插是将新节点添加到链表的头部,即将新节点插入到链表的第一个节点的前面。这种插入方式可以快速地将新节点添加到链表的开头,同时也方便获取链表的头节点。

示例代码如下:

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

// 定义链表节点结构体
typedef struct Node {
    int data;
    struct Node* next;
} Node;

// 尾插法建立链表
Node* createListByTailInsert() {
    int data;
    Node* head = NULL; // 头节点
    Node* tail = NULL; // 尾节点

    printf('请输入节点的值(输入-1结束):');
    while (1) {
        scanf('%d', &data);
        if (data == -1) {
            break;
        }

        // 创建新节点
        Node* newNode = (Node*)malloc(sizeof(Node));
        newNode->data = data;
        newNode->next = NULL;

        if (head == NULL) {
            head = newNode;
            tail = newNode;
        } else {
            tail->next = newNode;
            tail = newNode;
        }
    }

    return head;
}

// 头插法建立链表
Node* createListByHeadInsert() {
    int data;
    Node* head = NULL; // 头节点

    printf('请输入节点的值(输入-1结束):');
    while (1) {
        scanf('%d', &data);
        if (data == -1) {
            break;
        }

        // 创建新节点
        Node* newNode = (Node*)malloc(sizeof(Node));
        newNode->data = data;
        newNode->next = head;

        head = newNode;
    }

    return head;
}

// 打印链表的值
void printList(Node* head) {
    printf('链表的值为:');
    Node* node = head;
    while (node != NULL) {
        printf('%d ', node->data);
        node = node->next;
    }
    printf('
');
}

int main() {
    Node* head1 = createListByTailInsert();
    printList(head1);

    Node* head2 = createListByHeadInsert();
    printList(head2);

    return 0;
}

运行示例代码,可以通过输入节点的值来建立链表,并打印链表的值。使用尾插法建立链表时,输入的节点会逐个添加到链表的末尾;使用头插法建立链表时,输入的节点会逐个添加到链表的开头。

C语言链表操作:尾插和头插详解及示例

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

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