Разлика между масив и свързан списък

Автор: Laura McKinney
Дата На Създаване: 3 Април 2021
Дата На Актуализиране: 8 Може 2024
Anonim
Списъци масиви с променлива дължина
Видео: Списъци масиви с променлива дължина

Съдържание


Основната разлика между Array и Свързан списък по отношение на тяхната структура. Масивите са базирани на индекс структура на данните, където всеки елемент е свързан с индекс. От друга страна, свързаният списък разчита препратки където всеки възел се състои от данните и препратките към предишния и следващия елемент.

По принцип масивът е набор от подобни обекти на данни, съхранявани в последователни места в паметта под общ заглавие или име на променлива.

Докато свързаният списък е структура от данни, която съдържа поредица от елементи, където всеки елемент е свързан със следващия си елемент. В елемент от свързан списък има две полета. Едното е поле „Данни“, а друго - поле за връзка, Полето за данни съдържа действителната стойност, която трябва да се съхранява и обработва. Освен това полето за връзка съдържа адреса на следващия елемент от данни в свързания списък. Адресът, използван за достъп до определен възел, е известен като указател.


Друга съществена разлика между масив и свързан списък е, че Array има фиксиран размер и се изисква да бъде деклариран преди, но свързаният списък не е ограничен до размер и разширяване и свиване по време на изпълнение.

  1. Сравнителна диаграма
  2. дефиниция
  3. Ключови разлики
  4. заключение

Сравнителна диаграма

Основа за сравнениеArrayСвързан списък
ОсновенТова е последователен набор от фиксиран брой елементи от данни.Това е подреден набор, включващ променлив брой елементи от данни.
размерПосочено по време на деклариране.Няма нужда да уточнявате; растат и се свиват по време на изпълнение.
Разпределение за съхранение Местоположението на елементите се разпределя по време на компилиране.Позицията на елемента се определя по време на изпълнение.
Ред на елементите Съхранява се последователно Съхранява се произволно
Достъп до елементаДиректен или произволен достъп, т.е. Посочете индекса на масива или индекса.Последователно достъп, т.е. преминаване, започващо от първия възел в списъка с показалеца.
Вмъкване и изтриване на елементБавно сравнително, тъй като се изисква изместване.По-лесно, бързо и ефективно.
Searching Двоично търсене и линейно търсенелинейно търсене
Необходима е паметпо-малко | Повече ▼
Използване на паметтанеефективенефикасен


Определение на Array

Масивът се дефинира като набор от определен брой хомогенни елементи или елементи от данни. Това означава, че масивът може да съдържа само един тип данни, или всички числа, всички числа с плаваща запетая или всички знаци. Декларация на масив е както следва:
int a;
Където int указва типа данни или тип елементи, масивът се съхранява. „A“ е името на масив и числото, посочено в квадратните скоби, е броят на елементите, които масивът може да съхранява, това се нарича също размер или дължина на масива.

Нека разгледаме някои от концепциите, които трябва да се запомнят за масивите:

  • Достъп до отделните елементи на масива може да бъде описан чрез описание на името на масива, последвано от индекс или индекс (определяне на местоположението на елемента в масива) вътре в квадратните скоби. Например, за да извлечем 5-ти елемент от масива, трябва да напишем изявление a.
  • Във всеки случай елементите от масива ще се съхраняват в последователно място в паметта.
  • Първият елемент от масива има индекс нула. Това означава, че първият и последният елемент ще бъдат зададени като a и съответно.
  • Броят на елементите, които могат да бъдат запазени в масив, т.е. размерът на масива или неговата дължина се определя от следното уравнение:
    (горна граница-долна граница) + 1
    За горния масив ще бъде (9-0) + 1 = 10. Където 0 е долната граница на масива, а 9 е горната граница на масива.
  • Масивите могат да се четат или записват през цикъла. Ако четем едноизмерен масив, той изисква един цикъл за четене и друг за записване (ing) на масива, например:
    а. За четене на масив
    за (i = 0; i <= 9; i ++)
    {scanf ("% d", & a); }
    б. За писане на масив
    за (i = 0; i <= 9; i ++)
    {f ("% d", a); }
  • В случай на 2-D масив, той ще изисква две бримки и подобно n-размерния масив ще се нуждае от n бримки.

Операциите, извършвани на масиви, са:

  1. Създаване на масив
  2. Преминаване на масив
  3. Вмъкване на нови елементи
  4. Изтриване на необходимите елементи.
  5. Модификация на елемент.
  6. Обединяване на масиви

пример

Следващата програма илюстрира четенето и записването на масива.

#include
#include
невалиден основен ()
{
int a, i;
f ("Въведете масива");
за (i = 0; i <= 9; i ++)
{
scanf ("% d", & a);
}
f ("Въведете масива");
за (i = 0; i <= 9; i ++)
{
f ("% d n", a);
}
getch ();
}

Определение на свързания списък

Свързан списък е особен списък на някои елементи от данни, свързани един с друг. В този случай всеки елемент сочи към следващия елемент, който представлява логическото подреждане. Всеки елемент се нарича възел, който има две части.

INFO част, която съхранява информацията и POINTER, която сочи към следващия елемент. Както знаете за съхранение на адрес, ние имаме уникални структури от данни в C, наречени указатели. Следователно второто поле на списъка трябва да е тип указател.

Видовете свързани списъци са единично свързан списък, двойно свързан списък, кръгов свързан списък, кръгов двоен свързан списък.

Операциите, извършвани в свързания списък са:

  1. създаване
  2. преминаващи
  3. вмъкване
  4. заличаване
  5. Searching
  6. наниз
  7. показ

пример

Следният фрагмент илюстрира създаването на свързан списък:

структурен възел
{
int num;
stuct възел * next;
}
старт = NULL;
void create ()
{
typedef структурен възел NODE;
NODE * p, * q;
избор на чар;
първи = NULL;
правя
{
p = (NODE *) malloc (sizeof (NODE));
f ("Въведете елемента с данни n");
scanf ("% d", & p -> число);
ако (p == NULL)
{
q = старт;
докато (q -> следващ! = NULL)
{q = q -> следващ
}
p -> next = q -> следващ;
q -> = p;
}
още
{
p -> next = start;
старт = p;
}
f ("Искате ли да продължите (въведете y или n)? n");
scanf ("% c", & избор);
}
докато ((избор == y) || (избор == Y));
}

  1. Масивът е, че структурата на данните съдържа колекция от елементи от подобен тип данни, докато списъкът на свързаните данни се счита за непримитивна структура на данни съдържа колекция от нередовни свързани елементи, известни като възли.
  2. В масива елементите принадлежат на индекси, т.е. ако искате да влезете в четвъртия елемент, трябва да напишете името на променливата с нейния индекс или местоположение в квадратната скоба.
    В свързания списък обаче трябва да започнете от главата и да проправите своя път, докато стигнете до четвъртия елемент.
  3. Докато достъпът до масив от елементи е бърз, докато свързаният списък отнема линейно време, така че е доста по-бавен.
  4. Операции като вмъкване и изтриване в масиви отнемат много време. От друга страна, изпълнението на тези операции в свързани списъци е бързо.
  5. Масивите са с фиксиран размер. За разлика от тях, свързаните списъци са динамични и гъвкави и могат да разширят и свият размера си.
  6. В масив паметта се назначава по време на компилиране, докато в свързан списък се разпределя по време на изпълнение или изпълнение.
  7. Елементите се съхраняват последователно в масиви, докато се съхраняват произволно в свързани списъци.
  8. Изискването за памет е по-малко поради действителните данни, които се съхраняват в индекса в масива. Обратно, в свързаните списъци има нужда от повече памет поради съхранение на допълнителни следващи и предишни референтни елементи.
  9. Освен това използването на паметта е неефективно в масива. Обратно, използването на памет е ефективно в масива.

заключение

Масивите и свързаните списъци са типовете структури от данни, които се различават по своята структура, методи за достъп и манипулиране, изискване за памет и използване. И имат особено предимство и недостатък по отношение на прилагането му. Следователно, всеки един може да се използва според нуждите.