0Pricing
C Academy · Урок

Связные списки

Узнайте, как работают связные списки и как реализовать операции вставки и удаления

«Связные списки» — бесплатный урок C Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C Academy содержит 3 уроков всего.

Связные списки в C

Связные списки в C

Связный список — это динамическая структура данных, в которой элементы (узлы) соединены с помощью указателей.

В этом уроке Вы узнаете:

  • Как работают связные списки.
  • Как вставлять и удалять узлы в связном списке.
  • О преимуществах связных списков по сравнению с массивами.
Связные списки — иллюстрация 1

Пример: определение узла связного списка

Пример: определение узла связного списка

В C узел связного списка определяется с помощью struct, содержащей поле данных и указатель на следующий узел.

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

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

int main() {
    struct Node *head = NULL;
    return 0;
}

Вставка узла в начало

Вставка узла в начало

Чтобы вставить новый узел в начало связного списка:

  • Создайте новый узел.
  • Установите его указатель next на текущую голову списка.
  • Обновите указатель на голову списка.

Пример: вставка узла в начало

Пример: вставка узла в начало

Эта программа вставляет новый узел в начало связного списка.

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

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

void insertAtBeginning(struct Node **head, int newData) {
    struct Node *newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = newData;
    newNode->next = *head;
    *head = newNode;
}

int main() {
    struct Node *head = NULL;
    insertAtBeginning(&head, 10);
    printf("Inserted: %d\n", head->data);
    return 0;
}

Удаление узла

Удаление узла

Чтобы удалить узел из связного списка:

  • Найдите узел, который нужно удалить.
  • Обновите указатель next предыдущего узла.
  • Освободите память удалённого узла.

Пример: удаление узла

Пример: удаление узла

Эта программа удаляет узел из связного списка.

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

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

void deleteNode(struct Node **head, int key) {
    struct Node *temp = *head, *prev;
    if (temp != NULL && temp->data == key) {
        *head = temp->next;
        free(temp);
        return;
    }
    while (temp != NULL && temp->data != key) {
        prev = temp;
        temp = temp->next;
    }
    if (temp == NULL) return;
    prev->next = temp->next;
    free(temp);
}

int main() {
    struct Node *head = (struct Node*)malloc(sizeof(struct Node));
    head->data = 10;
    head->next = NULL;
    deleteNode(&head, 10);
    return 0;
}

Преимущества связных списков

Преимущества связных списков

Связные списки имеют несколько преимуществ по сравнению с массивами:

  • Динамический размер (не нужно заранее задавать размер).
  • Эффективная вставка и удаление элементов.
  • Нет потерь памяти из-за фиксированного размера.

Итоги

Итоги

В этом уроке Вы узнали:

  • Что такое связные списки и как они работают.
  • Как вставлять и удалять узлы.
  • О преимуществах связных списков по сравнению с массивами.

Далее мы рассмотрим стеки и очереди в C!

Связные списки — иллюстрация 9

Часто задаваемые вопросы

Урок «Связные списки» бесплатный?

Да — полный текст урока «Связные списки» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C Academy, подпишись на CoddyKit PRO. Курс C Academy содержит 3 уроков всего.

Чему я научусь в уроке «Связные списки»?

Узнайте, как работают связные списки и как реализовать операции вставки и удаления Ты практикуешь C Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C Academy?

Предыдущий опыт не требуется. C Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.

Сколько времени занимает урок «Связные списки»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C Academy?

Да. Каждый урок C Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Связные списки
  2. Стеки и очереди
  3. Деревья и графы
← Назад к C Academy