C语言:链表

首先,什么是链表呢?

链表是由节点组成的一种数据结构,它的每一个节点包含数据和指向下一个节点的引用。

常见的链表有许多种:

  1. 单链表:每个节点只有一个指向下一个节点的引用。
  2. 双链表:每个节点有指向前一个和后一个节点的引用。
  3. 循环链表:尾节点指向头节点,形成一个环。

关于链表的简单操作(附上代码):

1.定义链表节点结构:

struct Node 
{
    int data;

    struct Node* next;
};

2.创建空链表:

struct Node* head = NULL;

3.在链表的头部插入元素:

void inserttop(int value)
{
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));

    newNode->data = value;

    newNode->next = head;

    head = newNode;
}

4.在链表尾部插入元素:

void insertEnd(int value)
{
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = value;
    newNode->next = NULL;


    if (head == NULL)
    {
        head = newNode;

    } 
    else 
    {
        struct Node* temp = head;

        while (temp->next != NULL) 
        {
            temp = temp->next;

        }temp->next = newNode;
    }
}

5.删除指定值的节点:

void delete(int value)
{
    struct Node *current = head, *prev = NULL;

    while (current != NULL && current->data != value)
    {
        prev = current;

        current = current->next;
    }

    if (current != NULL) 
    {

        if (prev == NULL)
        {

            head = current->next;

        } 
        else 
        {

            prev->next = current->next;

        }free(current);
    }
}

6.打印链表元素:

void print() 
{
    struct Node* temp = head;

    while (temp != NULL) 
    {
        printf("%d -> ", temp->data);

        temp = temp->next;
    }printf("NULL\n");
}

链表的一些优点:

        链表相对数组,它的插入和删除操作变得更加高效,因为链表不需要移动大量元素,也不需要预先分配固定大小的内存,链表可以动态分配空间。

        同时,栈和队列也可以通过链表实现。链表还能和递归结合,例如反转链表的递归实现。

写在最后:

        这几天我把C语言的链表这一知识点简单的归纳了一下,虽然我归纳的这些链表知识有些浅显,但是易懂!

        感谢大家的阅读!欢迎大家指出文章的错误!

你可能感兴趣的:(C语言学习经验分享,c语言,链表,经验分享,程序人生,算法,数据结构)