Массив - это структура данных, отличная от связанного списка, верно?
Да, массив и связанный список - это разные структуры данных.
Связанный список :
Связанный список - это линейный набор элементов данных, порядок которых не определяется их физическим размещением в памяти. Вместо этого каждый элемент указывает на следующий. Это структура данных, состоящая из набора узлов, которые вместе представляют последовательность.
Предположим, что у вас есть структура узла, определенная следующим образом (с использованием конструкции языка C в примере):
struct Node
{
int data;
struct Node *next;
};
Каждый узел связанного списка имеет целое число и указатель на свой следующий узел, который используется для доступа к следующему члену списка (последний указатель на следующий узел установлен на NULL
). Просмотр в памяти будет выглядеть примерно так:
--------- --------- --------- ---------
| 1 | -|--->| 2 | -|--->| 3 | -|--->| 4 | -|--->NULL
--------- --------- --------- ---------
Он обеспечивает гибкость с точки зрения вставки / удаления элементов в списке в любом месте, вам просто нужно установить / сбросить следующие указатели узлов. Недостатком является то, что для доступа к его узлам требуется последовательный обход .
Массив
Структура данных массива или просто массив - это структура данных, состоящая из набора элементов (значений или переменных), каждый из которых идентифицируется по меньшей мере одним индексом или ключом массива.
Предположим, что у вас есть массив из 5 целых чисел (с использованием конструкции языка C в примере):
int arr[5] = {0}; // array of 5 integer initialized with 0
Просмотр в памяти будет выглядеть примерно так:
index 0 1 2 3 4
arr ---------------------
| 0 | 0 | 0 | 0 | 0 |
---------------------
Преимущество в том, что вы можете обращаться к любому элементу массива напрямую через его индекс . Например, если вы хотите получить доступ к элементу 3 rd , вы можете просто сделать a[2]
. Недостатком является то, что вставка / удаление элементов в массиве в любом месте, кроме конца массива, не является прямой. Для этого вам, возможно, придется перемешать несколько элементов массива.
Или я могу реализовать связанный список, используя массив?
Да, вы можете. Но вы не получите никаких преимуществ от этого. Скорее это внесет ненужную сложность в ваш код. Отметьте это .