📜  追加到列表中 - C 编程语言(1)

📅  最后修改于: 2023-12-03 14:57:58.508000             🧑  作者: Mango

在 C 编程语言中追加到列表中

在 C 编程语言中,我们经常需要在已存在的列表中添加新元素。本文将介绍如何在 C 中追加元素到列表中。

使用数组

在 C 中,我们经常使用数组来存储和处理数据。在创建数组时,我们需要确定数组的大小。如果我们希望在已存在的数组中添加新元素,我们需要创建一个新的数组,并将原来的元素复制到新数组中,最后将新元素添加到新数组中。

下面是一个简单的示例代码:

#include <stdio.h>

int main()
{
    int nums[5] = {1, 2, 3, 4, 5};
    int newNum = 6;
    int newNums[6];
    int i;

    for (i = 0; i < 5; i++)
    {
        newNums[i] = nums[i];
    }

    newNums[5] = newNum;

    for (i = 0; i < 6; i++)
    {
        printf("%d ", newNums[i]);
    }

    return 0;
}

输出结果为:

1 2 3 4 5 6

在上面的代码中,我们先定义了一个大小为 5 的数组 nums,并赋值为 {1, 2, 3, 4, 5}。然后我们创建了一个新的数组 newNums,大小为 6,用于存储新的元素。我们使用一个 for 循环,将原来的元素复制到新数组中。最后,我们将新元素 newNum 添加到新数组中,并输出结果。

使用链表

除了使用数组外,我们还可以使用链表来存储数据。链表是由节点组成的数据结构,每个节点包含数据和指向下一个节点的指针。

在使用链表时,我们可以通过遍历链表找到最后一个节点,然后将新元素添加到链表的末尾。

下面是一个简单的示例代码:

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

struct node {
    int data;
    struct node *next;
};

void append(struct node** head_ref, int new_data)
{
    struct node* new_node = (struct node*) malloc(sizeof(struct node));
    
    struct node *last = *head_ref;
    
    new_node->data = new_data;
    new_node->next = NULL;
    
    if (*head_ref == NULL)
    {
        *head_ref = new_node;  
        return;
    }
    
    while (last->next != NULL)
    {
        last = last->next;
    }
    
    last->next = new_node;
    return;
}

void printList(struct node *node)
{
    while (node != NULL)
    {
        printf("%d ", node->data);
        node = node->next;
    }
}

int main()
{
    struct node* head = NULL;
    append(&head, 1);
    append(&head, 2);
    append(&head, 3);
    append(&head, 4);
    append(&head, 5);
    append(&head, 6);
    printList(head);

    return 0;
}

输出结果为:

1 2 3 4 5 6

在上面的代码中,我们使用 struct 定义了一个链表节点 node,包含数据和下一个节点的指针。然后我们定义了一个 append 函数,用于向链表中添加新元素。在 append 函数中,我们先创建一个新节点 new_node,然后遍历链表,找到最后一个节点 last,将新节点 new_node 指向链表的末尾。最后,我们输出结果。

总结

在 C 编程语言中,我们可以通过数组和链表来追加元素到列表中。使用数组时,我们需要创建一个新的数组,并将原来的元素复制到新数组中,最后添加新元素到新数组中。使用链表时,我们可以通过遍历链表找到最后一个节点,然后将新元素添加到链表的末尾。