Տարբերությունը զանգվածների և կապակցված ցուցակների միջև

Տարբերությունը զանգվածների և կապակցված ցուցակների միջև
Տարբերությունը զանգվածների և կապակցված ցուցակների միջև

Video: Տարբերությունը զանգվածների և կապակցված ցուցակների միջև

Video: Տարբերությունը զանգվածների և կապակցված ցուցակների միջև
Video: ԱՌՈՂՋ ՍՆՎԵԼՈՒ ՀՈԳԵԲԱՆՈՒԹՅՈՒՆ - "ՀՈԳԵԲԱՆՆԵՐԻ ՀԵՏ՝ ՀՈԳԵԲԱՆՈՒԹՅԱՆ ՄԱՍԻՆ" հաղորդաշար 2024, Նոյեմբեր
Anonim

Զանգվածներ ընդդեմ կապակցված ցուցակների

Զանգվածներն ամենից հաճախ օգտագործվող տվյալների կառուցվածքն են տարրերի հավաքածուն պահելու համար: Ծրագրավորման լեզուներից շատերը հնարավորություն են տալիս հեշտությամբ հայտարարել զանգվածներ և մուտքի տարրեր զանգվածներում: Կապակցված ցուցակը, ավելի ճիշտ՝ առանձին կապակցված ցուցակը, նույնպես տվյալների կառուցվածք է, որը կարող է օգտագործվել տարրերի հավաքածուն պահելու համար: Այն կազմված է հանգույցների հաջորդականությունից և յուրաքանչյուր հանգույց ունի հղում հաջորդականության հաջորդ հանգույցին:

Ցուցադրված է նկար 1-ում, կոդի կտոր է, որը սովորաբար օգտագործվում է զանգվածին արժեքներ հայտարարելու և վերագրելու համար: Նկար 2-ում պատկերված է, թե ինչպիսի տեսք կունենա զանգվածը հիշողության մեջ:

Պատկեր
Պատկեր
Պատկեր
Պատկեր

Վերևի կոդը սահմանում է զանգված, որը կարող է պահել 5 ամբողջ թվեր, և դրանք հասանելի են՝ օգտագործելով 0-ից 4 ինդեքսները: Զանգվածի կարևոր հատկությունն այն է, որ ամբողջ զանգվածը հատկացվում է որպես հիշողության մեկ բլոկի, և յուրաքանչյուր տարր ստանում է իր սեփական տարածքը: զանգվածում. Երբ զանգվածը սահմանվում է, դրա չափը ֆիքսվում է: Այսպիսով, եթե կազմման պահին վստահ չեք զանգվածի չափի մասին, դուք պետք է սահմանեք բավականաչափ մեծ զանգված՝ ապահով կողմում գտնվելու համար: Բայց, շատ ժամանակ մենք իրականում պատրաստվում ենք օգտագործել ավելի քիչ թվով տարրեր, քան մենք հատկացրել ենք: Այսպիսով, զգալի քանակությամբ հիշողություն իրականում վատնում է: Մյուս կողմից, եթե «բավականաչափ մեծ զանգվածը» իրականում բավականաչափ մեծ չէ, ծրագիրը կխափանվի:

Կապակցված ցուցակը հիշողություն է հատկացնում իր տարրերին առանձին հիշողության բլոկում, և ընդհանուր կառուցվածքը ստացվում է այս տարրերը որպես շղթայի կապեր կապելով:Կապակցված ցանկի յուրաքանչյուր տարր ունի երկու դաշտ, ինչպես ցույց է տրված Նկար 3-ում: Տվյալների դաշտը պահում է իրական պահված տվյալները, իսկ հաջորդ դաշտում հղում է կատարվում շղթայի հաջորդ տարրին: Կապակցված ցուցակի առաջին տարրը պահվում է որպես կապակցված ցուցակի գլխավոր:

տվյալներ հաջորդ

Նկար 3. Կապակցված ցուցակի տարր

Պատկեր
Պատկեր
Պատկեր
Պատկեր

Նկար 4-ը պատկերում է կապակցված ցանկը երեք տարրերով: Յուրաքանչյուր տարր պահպանում է իր տվյալները, և բոլոր տարրերը, բացի վերջինից, պահում են հղում հաջորդ տարրին: Վերջին տարրը զրոյական արժեք է պահում իր հաջորդ դաշտում: Ցանկի ցանկացած տարր կարելի է մուտք գործել՝ սկսելով գլխից և հետևելով հաջորդ ցուցիչին, մինչև չբավարարեք պահանջվող տարրը:

Չնայած զանգվածները և կապակցված ցուցակները նման են այն իմաստով, որ երկուսն էլ օգտագործվում են տարրերի հավաքածուն պահելու համար, դրանք տարբերվում են այն ռազմավարությունների պատճառով, որոնք նրանք օգտագործում են՝ դրա տարրերին հիշողություն հատկացնելու համար: Զանգվածները հիշողություն են հատկացնում իր բոլոր տարրերին որպես մեկ բլոկի, և զանգվածի չափը պետք է որոշվի գործարկման ժամանակ: Սա կդարձնի զանգվածները անարդյունավետ այն իրավիճակներում, երբ դուք չգիտեք զանգվածի չափը կոմպիլյացիայի ժամանակ: Քանի որ կապակցված ցուցակը հիշողություն է հատկացնում իր տարրերին առանձին, այն շատ արդյունավետ կլինի այն իրավիճակներում, երբ դուք չգիտեք ցուցակի չափը կազմման պահին: Կապակցված ցանկում տարրերի հայտարարումը և մուտքը պարզ չեն լինի՝ համեմատած այն բանի հետ, թե ինչպես եք ուղղակիորեն մուտք գործում զանգվածի տարրեր՝ օգտագործելով դրա ինդեքսները:

Խորհուրդ ենք տալիս: