У основи, низ је скуп сличних објеката података похрањених у секвенцијалним меморијским локацијама под заједничким насловом или називом варијабле.
Док је повезана листа структура података која садржи низ елемената где је сваки елемент повезан са својим следећим елементом. Постоје два поља у елементу повезане листе. Једно је поље података, а друго је поље везе, поље података садржи стварну вриједност коју треба похранити и обрадити. Поред тога, поље везе садржи адресу следеће ставке података у повезани листи. Адреса која се користи за приступ одређеном чвору позната је као показивач.
Друга значајна разлика између низа и повезаних листи је да Арраи има фиксну величину и мора бити декларисан раније, али Линкед Лист није ограничен на величину и проширује се и склапа током извршавања.
Цомпарисон Цхарт
Основа за поређење | Арраи | Повезана листа |
---|---|---|
Басиц | То је конзистентан скуп фиксног броја ставки података. | То је уређени скуп који садржи варијабилни број ставки података. |
Величина | Наведено током декларације. | Нема потребе да се прецизира; расту и смањују се током извршења. |
Аллоцатион Стораге | Локација елемената се додјељује за вријеме компајлирања. | Положај елемената је додељен током трајања. |
Редослед елемената | Похрањен узастопно | Похрањен случајно |
Приступ елементу | Директан или насумично приступ, тј. Наведите индекс индекса или индекс. | Секвенцијално се приступа, тј. Прелазе почевши од првог чвора у листи по показивачу. |
Уметање и брисање елемента | Спора релативна промјена је потребна. | Лакше, брже и ефикасније. |
У потрази | Бинарно претраживање и линеарно претраживање | линеарно претраживање |
Потребна меморија | мање | Више |
Коришћење меморије | Неефикасан | Ефикасно |
Дефиниција матрице
Низ је дефинисан као скуп дефинисаног броја хомогених елемената или података. То значи да низ може садржати само једну врсту података, или све бројеве, све бројеве с помичним зарезом или све знакове. Декларација низа је следећа:
инт а [10];
Где инт специфицира тип података или типове елемената. “А” је име низа, а број наведен у угластим заградама је број елемената које низ може да похрани, што се такође назива величина или дужина низа.
Погледајмо неке од концепата које треба запамтити о низовима:
- Индивидуалним елементима низа може се приступити описом имена поља, након чега слиједи индекс или индекс (одређивање локације елемента у низу) унутар угластих заграда. На пример, да бисмо дохватили 5. елемент поља, потребно је да напишемо изјаву а [4].
- У сваком случају елементи низа ће бити похрањени у узастопној меморијској локацији.
- Први елемент низа има нулти индекс [0]. То значи да ће први и последњи елемент бити наведени као [0], а [9].
- Број елемената који се могу ускладиштити у низу, тј. Величина поља или његове дужине, даје се помоћу следеће једначине:
(горња граница-доња граница) + 1
За горњи низ би био (9-0) + 1 = 10. Где је 0 доња граница поља, а 9 је горња граница поља. - Низови се могу читати или писати кроз петљу. Ако читамо једнодимензионални низ, то захтева једну петљу за читање и другу за писање (штампање) низа, на пример:
а. За читање низа
за (и = 0; и <= 9; и ++)
{сцанф ("% д", & а [и]); }
б. За писање низа
за (и = 0; и <= 9; и ++)
{принтф (“% д”, а [и]); } - У случају 2-Д поља, то би захтијевало двије петље и слично н-димензионални низ би требао имати петље.
Операције које се изводе на низовима су:
- Креирање низа
- Прелазећи низ
- Уметање нових елемената
- Брисање потребних елемената.
- Модификација елемента.
- Спајање низова
Пример
Следећи програм илуструје читање и писање низа.
#include
#include
void main ()
{
int a[10], i;
printf("Enter the array");
for ( i= 0; i <= 9; i++)
{
scanf ( "%d", &a[ i ] ) ;
}
printf( "Enter the array" );
for (i = 0 ; i <= 9 ; i++)
{
printf ( "%d\n", a[ i ] ) ;
}
getch ();
}
Дефиниција повезане листе
Повезана листа је посебна листа неких елемената података повезаних један с другим. У овом елементу сваки елемент указује на следећи елемент који представља логички поредак. Сваки елемент се назива чвор, који има два дела.
ИНФО дио који похрањује информације и ПОИНТЕР који указује на сљедећи елемент. Као што знате за чување адресе, имамо јединствену структуру података у Ц која се зове показивач. Стога друго поље листе мора бити тип показивача.
Врсте повезаних листи су Сингли-линкед лист, Доубли линкед лист, Цирцулар линкед лист, Цирцулар доубле линкед лист.
Операције извршене на повезаној листи су:
- Цреатион
- Траверсинг
- Инсертион
- Брисање
- У потрази
- Цонцатенатион
- Приказ
Пример
Следећи исечак илуструје креирање повезане листе:
struct node
{
int num;
stuct node *next;
}
start = NULL;
void create()
{
typedef struct node NODE;
NODE *p, *q;
char choice;
first = NULL;
do
{
p = (NODE *) malloc (sizeof (NODE));
printf ("Enter the data item\n");
scanf ("%d", & p -> num);
if (p == NULL)
{
q = start;
while (q -> next ! = NULL)
{ q = q -> next
}
p -> next = q -> next;
q -> = p;
}
else
{
p -> next = start;
start = p;
}
printf ("Do you want to continue (type y or n) ? \n");
scanf ("%c", &choice) ;
}
while ((choice == 'y') || (choice == 'Y'));
}
Кључне разлике између поља и повезане листе
- Низ је структура података која садржи колекцију сличних типова података, док се листа повезивања сматра не-примитивном структуром података која садржи колекцију неуређених повезаних елемената познатих као чворови.
- У низу елементи припадају индексима, тј. Ако желите да уђете у четврти елемент, морате да упишете име променљиве са његовим индексом или локацијом унутар квадратне заграде.
Ипак, на повезани листи, морате почети од главе и радити свој пут све док не дођете до четвртог елемента. - Док је приступ низу елемената брз, а Повезана листа узима линеарно време, то је прилично спорије.
- Операције попут уметања и брисања у низовима троше много времена. С друге стране, перформансе ових операција у повезаним листама су брзе.
- Низови су фиксне величине. Насупрот томе, повезане листе су динамичне и флексибилне и могу се проширити и уговорити његову величину.
- У низу, меморија се додељује за време компајлирања, док се у Линкед листи додељује током извршења или извођења.
- Елементи се складиште у низовима, док се похрањују насумично у повезаним листама.
- Потреба за меморијом је мања због стварних података који се похрањују унутар индекса у низу. Насупрот томе, постоји потреба за више меморије у повезаним листама због складиштења додатних следећих и претходних референцирајућих елемената.
- Поред тога, коришћење меморије је неефикасно у низу. Насупрот томе, искоришћеност меморије је ефикасна у низу.
Закључак
Арраи и Линкед листе су типови структура података који се разликују по својој структури, методама приступа и манипулације, захтевима за меморијом и употребом. И имају посебну предност и недостатак над његовом имплементацијом. Према томе, било која од њих се може користити по потреби.