C++ proqramlaşdırma dİlİ 19. 12. 2011



Yüklə 0,74 Mb.
səhifə6/11
tarix17.11.2018
ölçüsü0,74 Mb.
#80411
növüNümunə proqram
1   2   3   4   5   6   7   8   9   10   11

char vezife[20];

double maash; };

Beləliklə biz yeni ishci tipi təyin etdik.

Bu elandan sonra biz proqramımızda bu tipdən adi tiplər kimi dəyişənlər və ьnvan

dəyişənləri elan edə bilərik. Məsələn: ishci dey1, ishci1, *muhendis, yeni_ishciler[100];

Yuxaridakı elanda biz ishci tipindən olan dey1 ishci1 dəyişənləri, muhendis unvan dəyişəni

və 100 elementli yeni_ishciler cərgəsi yatardıq. 100 000 ishci barəsində məlumat saxlamaq

ьзьn biz yeni yaratdığımız ishci tipindən olan 100 000 elementli cərgədən istifadə edə bilərik.

Ishci ishciler[100000];

İndi isə maraqlı məqam. Tutaq ki, int tipindən olan x dəyişənimiz var. int x; Əgər biz bu

d yiş n 4 qiym ə ə ə əti mənimsətmək istəyiriksə x=4; yazırıq. Bəs strukt tipindən olan

dəyişənlərə və ya oların təşkil onlunduqları ayrı-ayrı elementlərə necə qiymət mənimsədək?



strukt tipinin elementlərinə mьraciət etmək ьзьn ( . ) və ya ( -> ) operatorlarından istifadə

olunur.


Aşağıdakı kimi:

ishci reis;

reis.yash = 50;

strcpy(reis.ad,"Anar");

Yuxarıdakı kod hissəsində biz ishci tipindən olan reis dəyişəni elan elədik və onun yash

həddinə 50 , ad həddinə isə ”Anar” qiymətlərini mənimsətdik. Artıq strukt tipindən istifadə

etməklə proqram tərtibinin vaxtı зatıb.

Proqram nьmunəsi:

//prog_8_1.c

#include

#include

struct str{

int x;


char soz[30];

};

int main(int argc, char *argv[])



{

str str_dey;

str_dey.x=50;

strcpy(str_dey.soz,"Ali");

std::cout<<"str_dey -in heddleri \nx - "<
<<"\nsoz - "<
return 0;

}

Proqramı yerinə yetirək



C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>./prog2.exe

str_dey -in heddleri

x – 50

soz – Ali

C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>

8.1 Strukut tipindən olan ьnvan dəyişənləri

strukt tipindən aşağıdakı kimi ьnvan dəyişəni təyin edək:

ishci *muhendis;

Əgər biz strukt tipdən adi yox unvan dəyişəni təyin ediriksə onda strukt tipinin elementlərinə

mьraciət zamanı ( . ) əvəzinə (->) istifadə edirik.

Misal ьзьn:



muhendis->yash=45; kimi.

Paraqraf 4-dən bilirik ki, hər hansı bir tipdən olan unvan dəyişəninə yaddaşda yer ayırmaq

ьзьn

tip *dey; dey = new ischi;

sintaksisindən istifadə edirik.

Bu sintaksis sas n yuxarıda ə ə ə təyin etdiyimiz muhendis ьnvan dəyişəninin elementlərinə

qiymət mənimsədə bilmək ьзьn əvvəlcə ona yaddaşda aşağıdakı kimi yer ayırmalıyıq.



muhendis = new ishci;

Bu operatordan sonra biz artıq muhendis dəyişəninin istənilən elementinə -> operatoru

vasitəsilə mьraciət edə bilərik.

muhendis->yash=33;

strcpy(muhendis->ad,"Rustem");

Proqram nьmunəsi:



//prog_8_2.c

#include

#include

struct yeni_tip

{ char ad[20];

int x;

};

int main(int argc, char *argv[])



{

yeni_tip *dey;

dey = new yeni_tip;

dey->x=50;

strcpy(dey->ad,"Veli");

std::cout<ad<<" "<x<<"\n";



return 0;

}

Nəticə:



C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>./prog2.exe

Veli 50

C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>

Зalışmalar:

1. Aşağıdakı işləri gцrən proqram tərtib edib icra edin.

int tipli x və 30 simvollu sətir tipli soz dəyişənlərindən ibarət olan str adlı yeni struct tipi

yaradın.Bu yeni yaratdığınız tipdən str_dey adlı dəyişən elan edin.Bu dəyişənin x və soz

ьzvlərinə mьvafiq olaraq 10 və "proqramlashdirma" sцzlərini mənimsədin. str_dey

dəyişəninin ьzvlərinin qiymətlərini ekranda зap edin.

2. Yuxarıdakı məsələdə str tipindən ьnvan tipli str_gst dəyişəni elan edin və məsələnin

tələblərin yerinə yetirin.

3. 1 -ci зalışmada daxil olunan str tipli 5 elementdən ibarət strler cərgəsi elan edin. Bu

cərgənin hər bir elementinin ьzvlərinə istifadəзi tərəfindən daxil olunan qiymətlər

mənimsədin. Daha sonra bu qiymətləri ekranda зap edin.

4. Зalışma 3-ь funksiyalardan istifadə etməklə həll edin. Bu məqsədlə 2 funksiya tərtib edin,

daxil_et və cap_et . Mьvafiq olaraq daxil_et funksiyası istifadəзidən məlumatları oxuyub,

strler cərgəsinin elementlərinə mənimsədəcək, cap_et isə strler cərgəsinin elementlərinin

qiymətlərini зap edəcək.

5. Funksiyalardan istifadə etməklə elə proqram qurun ki, зalışma 1-də daxil olunan str tipli 5

elementdən ibarət strler cərgəsi elan etsin. daxil_et funksiyası vastəsilə istifadəзidən oxunan

qiymətləri bu cərgəsinin elemntlərinə mənimsətsin. Daha sonra max_el funksiyası tərtib

edin, hansı ki, strler cərgəsinin elementləri arasında x-i ən bцyьk olanın qiymetlerini ( x və

soz ) зap etsin.

6. Зalışma 5-deki max_el funksiyasını ele deyişin ki, strler cərgəsinin elementləri arasında

soz həddlərinin ən uzunun qiymətlərini ( x və soz ) зap etsin.



$9 Siyahılar

Bu mцvzuda biz C++ dilind yazılmış proqramlarda зox geniş istifad ə ə olunan yeni tiplərlə -

siyahılarla tanış olacağıq. Siyahıların C++ dilində tətbiqi olduqca genişdir və siyahısız C++

dilində yazılmış proqramları təsəvvьr etmək mьmkьn deyil. Praktiki cəhətdən siyahılar

cərgələrə oxşardır, onlar da cərəglər kimi цzьndə verilmiş tipdən olan elementlər ardıcıllığını

saxlayır. Lakin siyahıların cərgələrdən fundamental ьstьn cəhətləri oldur ki, cərgə elan edən

zaman biz onun elementlərinin sayını əvvəlcədən elan etməliyiksə və sonra biz cərgəyə

əlavə element yerləşdirə və ya onun elementlərinin sayının dəyişdirə bilməriksə, siyahının

elementləri ilə istədiyimiz kimi manipulyasiya edə bilərik. Yəni proqramın icrası boyu biz

siyahıya istənilən sayda yeni element əlavə edə və ya mцvcud elementləri siyahıdan silə

bilərik.

Misal ьзьn:

Kompьterdə hal-hazırda icra olunan proqramlara nəzarət etmək ьзьn nьvə task_struct adlı

siyahıdan istifadə edir. İstifadəзi yeni proqramlar yьklədikcə, nьvə task -lar siyahısına yeni

element əlavə edir və bu elementdə yeni proqram barədə mьvafiq məlumatları (yьkləndiyi

yerin ьnvanı, adı, təşkil olunduğu hissələr, aзdığı fayllar, v.s.) yerləşdirir. Daha sonra hər

hansı proqram sona зatdıqda nьvə mьvafiq elementi task -lar siyahısından silir. Əgər bu

zaman siyahı əvəzinə cərgədən istifadə olunsaydı onda biz kompterdə mьəyyən saydan

artıq proqram yьkləyə bilməzdik.

Cərgənin elementlərinin sayın bцyьk gцtьrdьkdə isə , lazım olunmayan elementlər boşboşuna

yaddaşda yer tutar.

9.1 Siyahının elan edilməsi

int tipindən biz adi dəyişən, ьnvan dəyişəni və cərgə elan etmək qaydalarını bilirik.



int x, *y, z[10];

Yuxarıdakı misalda biz int tipindən x dəyişəni, y ьnvan dəyişəni və 10 elementdən ibarət z

cərgəsi elan etdik. İndi isə hər bir elementində int tipli dəyişən olan siyahı elan edək. Bunun

ьзьn əvvəlcə siyahını təşkil edən obyektlərin tipini yaratmalıyıq. Yəni, qeyd elədik ki, siyahı

da cərgə kimi elementlər(obyektlər) ardıcıllığıdır və bu elementlərin(obtektlərin) hər birində

mьxtəlif məlumatlar yerləşdirmək olar. İndi biz həmin 1 obyekti yaratmağa зalışırıq, daha

sonra bir neзə bu cьr obyekti bir-biri ilə əlaqələndirib siyahı yaratma qaydasını цrgənəcəyik.

Baxdığımız sadə halda yaratmaq istədiyimiz obyekt цzьndə bir məlumat - int tipindən olan

dəyişən saxlayır. Bu obyekti yaratmaq ьзьn biz struct tipdən istifadə edəcəyik.

Aşağıdakı kimi:



struct syh_el {

int x;

}

Yuxarıda biz цzьndə int tipindən olan dəyişən, x -i saxlayan yeni struct tipi yaratdıq. İndi bu

tipdən olan bir neзə dəyişən elan edək.

syh_el dey1, dey2, dey3, dey4;

Hal-hazırda yaddaşda vəziyyət aşağıdakı kimidir:

Biz is siyahı almaq ьзьn bu obyektl ri bir-biri il laq l ndirm ə ə ə ə ə ə əliyik, aşağıdakı kimi:

Bir az daha səliqəli gцstərsək, aşağıdakı kimi:



Siyahı yaratma qaydası:

Əsas məsələ bir obyekti başqa obyekt ilə əlaqələndirməkdir . Əgər yaratmış olduğumuz

obyektlərdən birini, digəri ilə əlaqələndirə bilsək, daha sonra yeni obyekti digər başqa biri ilə

əlaqələndirə bilərik. Beləliklə də siyahıya istənilən sayda yeni obyekt əlavə edib siyahımızı

istədiyimiz qədər uzada bilərik.

Bəs bir obyekti digəri ilə necə əlaqələndirək?

Bunun ьзьn proqramlaşdırmada aşağıdakı ilk baxışda elə də anlaşılmayan qaydadan istifadə

edirlər. Siyahıda hər bir obyekt цzьndən sonra gələn obyektin yaddaşdakı ьnvanın bilməlidir.

Bunun ьзьn obyektin daxilində onun цz tipindən olan ьnvan dəyişəni yerləşdirirlər və bu

ьnvan dəyişəninə siyahının nцvbəti obyektinin ьnvanını mənimsədirlər.

Aşağıdakı elana nəzər salaq:

struct syh_el {

int x;


syh_el *novb_el;

}

Bu elanın yuxarıdakı elandan yeganə fərqi o oldu ki, biz burada struct syh_el tipinin daxilində



bu tipdən olan *novb_el ьnvan dəyişəni yerləşdirdik. Artıq bu bizə siyahı yaratmağa imkan

verir. Əvvəlcə biz siyahımızı elan etməliyik.

Aşağıdakı kimi:

syh_el *menim_syh;

Yaddaşın vəziyyəti:

Siyahı yaratmaq ьзьn syh_el tipindən olan daha iki ьnvan dəyişəninə ehtiyacımız olacaq.

Bunları p və q ilə işarə edək. Bunlardan biri - p , yeni obyektlərin yaradılması və

inisializasiyası (ilkin qiymətin mənimsədilməsi), digəri - q isə iterasiya ьзьndьr(siyahı boyu

hərəkət etmək).

Gəlin bu dəyişənləri də elan edək:

syh_el *p,*q;

Yeri gəlmişkən yaddaşa da bir цtəri nəzər salaq:

Hər şey hazırdır, siyahının ilk elementini yarada bilərik.

Bunun ьзьn yazırıq:



p = new syh_el;

Bu zaman yaddaşın vəziyyəti aşağıdakı kimi olar:

Nцvbəti addım menim_syh dəyişənini bu yeni yaratdığımız obyektə mənimsətməkdir.

Bunun ьзьn sadəcə yazırıq:



menim_syh = p;

Yaddaşın vəziyyəti aşağıdakı kimidir:

Artıq siyahıya element əlavə etmək ьзьn menim_syh dəyişənindən istifadə etməyəcəyik. O

siyahının ilk elementinə istinad edir və siyahıya mьraciət etmək ьзьn bu dəyişəndən istifadə

edəcəyik. Hələlik isə siyahının yaradılmasını davam etdirək.

İkinci elementi yaratmaq ьзьn hazırlıq işləri gцrək.

Bunun ьзьn iterasiya dəyişənini siyahının ilk elementinə ( p -yə) , ilk elementin ikinci

elementlə əlaqələndirmə həddini( novb_el ) isə NULL qiymətinə mənimsətməliyəm.



NULL adətən ьnvan dəyişənlərinin yaddaşda heз bir yerə ьmvanlanmadığını bildirmək ьзьn

istifadə olunur.

Bu bizə siyahının sonun mьəyyənləşdirmədə lazım olacaq.

q = p;

p->novb_el = NULL;

Yaddaşın vəziyyəti aşağıdakı kimidir:

Siyahının ikinci elementini yaradaq, eyni ilə birinci elementi yaratdığımız kimi:

p = new syh_el;

Yaddaşın vəziyyətinə baxaq:

Hey diqqət! Əsas anlardan biri. İlk element ilə yeni yaratdığımız elementi birləşdiririk.

Bunun ьзьn sadəcə yazırıq:



q->novb_el = p;

Yaddaşa nəzər salaq:

Artıq əlaqəmiz var.

Nцvbəti 3-cь elementi yaratmaq ьзьn hazırlıq işləri gцrək(bayaq bunu eləmişdik).



q = p;

p->novb_el = NULL;

Yaddaşa baxırıq:

Artıq bu şəkildə davam edərək siyahıya istədiyimiz qədər yeni element əlavə edə bilərik.

Tutaq ki, siyahıya mьəyyən qədər element əlavə etmişik və siyahımız aşağıdakı şəkildədir:

Ən sonda p və q dəyişənlərinin siyahıya istinadlarını ləğv etməliyik.

p=NULL;

q=NULL;

Bununla da siyahı yaratma prosesini tamamlamış olduq.

З tin gцrьn bil r, amma siyahılar proqramlaşdırmada v zedilm ə ə ə ə ə əzdir və зox praktikdirlər.

Aşağıdakı nьmunə proqramları yerinə yetirdikdən sonra siyahılarla işləmə bacarığımız bir

qədər də artmış olar.

Proqram nьmunələri:

Gəlin yuxarıda daxil etdyimiz, nьmunəyə uyğun proqram hazırlayaq.

Yəni sadə bir proqram tərtib edək, bu proqramda цzьndə ancaq bir hədd , int x; saxlayan

obyektlərdən ibarət siyahı tərtib edək, bu siyahının obyektlərinin həddlərinə ( x ) qiymətlər

mənimsədək, daha sonra siyahının elementlərini зap edək.

Əlbəttdə hələlik biz hər şeyi əlimizlə edəcəyik, bir az sonra isə prosesi avtomatlaşdırmaq

məqsədilə funksiyalardan istifadə edəcəyik.

Proqram 1.

// prg_9_1.cpp

#include

#include

struct syh_el

{ int x;


syh_el *novb_el;

};

int main(int argc, char *argv[])



{

// istifade edeceyimiz deyishenleri ilan edirik

syh_el *menim_syh, *p, *q;

int dey;

// ilk elementi yaradaq

p = new syh_el;



// lazimi menimsetmeleri aparaq

menim_syh = p;

q = p;

p->novb_el = NULL;



// her shey hazirdir ikinci elementi yaradiriq

p = new syh_el;



// siyahi ile ikinci elementin elaqesini qururuq

q->novb_el = p;



// lazim menimsetmeleri edirik

q = p;


p->novb_el = NULL;

// artiq siyahida iki obyekt var, 3-nu yaradaq

// 3-cu elementi yaradiriq

p = new syh_el;



// siyahinin sonu ile ucuncu elementin elaqesini qururuq

q->novb_el = p;



// lazimi menimsetmeleri edirik

q = p;


p->novb_el = NULL;

// siyahida hal-hazirda 3 element var, helelik besdir.

// p ve q -nu siyahidan ayiraq

p=NULL;


q=NULL;

/* vessalam indi menim_syh deyisheni yeni yaratdigimiz siyahinin ilk

elementine istinad edir ve onun vastesile siyahini butun

obyektlerine muraciet ede bilerem*/

/* Siyahinin elementlerine qiymetler menimsedek, daha sonra bu

qiymetleri cap edeceyik*/

// Yene p ye ehtiyacimiz olacaq

p = menim_syh;



// indi p dayanib siyahinin evvelinde , ashagidaki koda diqqet edin

std::cout<<"Siyahinin heddlerinin qiymetlerini daxil edin.\n";

std::cout<<"Siyahinin birinci heddinin qiymetini daxil edin. \n";

std::cin>>dey;



/*Siyahinin ilk obyektinin x heddine istifadecinin daxil etdiyi

qiymeti menimsedirem */

p->x = dey;



/* Siyahinin ikinci obyekti uzerine surushmek ucun ashagidaki

qaydadan istfade olunur */

p = p->novb_el;



/* Artiq p siyahinin ikinci obyektine istinad edir ,

onun x heddine qiymet menimsedek*/

std::cout<<"Siyahinin ikinci heddinin qiymetini daxil edin. \n";

std::cin>>dey;

p->x = dey;

p = p->novb_el;

//Nehayet 3-cu obyekt

std::cout<<"Siyahinin ucuncu heddinin qiymetini daxil edin. \n";

std::cin>>dey;

p->x = dey;



/* p oz ishini bitirdi, siyahini ondan azad eliyirem.

Calishin siyahiniza lazim olmayan elave istinadlar saxlamayasiniz */

p = NULL;



//Siyahinin elementlerine qiymetler menimsetdik, indi onlari cap edek

// p-ni siyahinin ilk ilk elementine menimsedek, bunu etmeyi bilirik

p = menim_syh;



// menim_syh -nin funksiyasi ancaq siyahinin bashlangic unvanini

//ozunde saxlamaqdir

std::cout<<"Siayhinin elementleri ashagidakilardir: \n\n";

dey = p->x;

std::cout<<"Birinci element "<

//iknici elementin uzerine susrushek

p = p->novb_el;

dey = p->x;

std::cout<<"Ikinci element "<

//Ucuncu elementin uzerine susrushek

p = p->novb_el;

dey = p->x;

std::cout<<"Ucuncu element "<

std::cout<<"\nSiayhinin elementleri cap olundu \n";

return 0;

}

Proqramı yerinə yetirək:



C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>prog2.exe

Siyahinin heddlerinin qiymetlerini daxil edin.

Siyahini birinci heddinin qiymetini daxil edin.

65

Siyahini ikinci heddinin qiymetini daxil edin.

345

Siyahini ucuncu heddinin qiymetini daxil edin.

78

Siayhini elementleri ashagidakilardir:

Birinci element 65

Ikinci element 345

Ucuncu element 78

Siayhinin elementleri cap olundu

C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>

Bu nьmunədə biz sadə siyahı yaratdıq 3 elementdən ibarət, siyahının həddlərinə qiymətlər

mənimsətdik və bu qiymətləri зap etdik. Praktikada bu cьr məsələlərin həllində funksiyadan

istifadə etmək zəruridir. Gəlin yuxarıdakı proqramın funksiyaların tətbiqi ilə olan variantını

nəzərdən keзirək. Funksiyalardan istifadə etməklə yuxarıda baxrdığımız proqram aşağıdakı

kimi olar: Bizə mahiyyət etibarilə 2 funksiya lazımdır: biri siyahını yaratmaq və ona

elementləri yerləşdirmək, digəri isə siyahının elementlərini зap etmək. Bu funksiyaları uyğun

olaraq siyahi_yarat siyahini_cap_et kimi adlandıraq.

Birinci funksiya 2 parametr qəbul edir : syh_el * tipindən olan dəyişən - yaratmaq istədiyimiz

siyahı və int tipli dəyişən - siyahıya daxil etmək istədiyimiz elementlərin sayı. İkinci funksiya

isə bir parametr qəbul edir: зap etməli olduğumuz siyahıya istinad, struct syh_el * tipli.

Funksiyaların elanları aşağıdakı kimi olar:



syh_el * siyahi_yarat(syh_el *syh, int elem_say); void siyahini_cap_et( syh_el *);

Proqramı daxil edək:



Proqram 2.

// prg_9_2.cpp

#include

#include

struct syh_el

{ int x;


syh_el *novb_el;

};

syh_el *siyahi_yarat(struct syh_el *syh, int elem_say);



void siyahini_cap_et(struct syh_el *);

int main(int argc, char *argv[])

{

// istifade edeceyimiz deyishenleri ilan edirik

struct syh_el *menim_syh;

// siyahinin bosh oldugunu bildirmek ucun

menim_syh = NULL;

int say;

std::cout<<"Siyahinin elementlerinin sayini daxil edin \n";

std::cin>>say;

menim_syh = siyahi_yarat(menim_syh,say);

siyahini_cap_et(menim_syh);

return 0;

}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

syh_el *siyahi_yarat( syh_el *syh, int elem_say)

{ syh_el *

p, *

q;

p=syh;



q=syh;

int i,dey;



for (i=1; i<=elem_say; ++i)

{

std::cout<<"siyahinin "<

<<" -ci elementini daxil edin \n";

std::cin>>dey;

p = new syh_el;

p->x = dey;

p->novb_el = NULL;

if (syh==NULL)

{

//siyahi boshdur, ilk element

syh=p;

q = p;


p = NULL;

} else

{ //siyahida element var

q->novb_el = p;

q = p;

}}

return syh;



}

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

void siyahini_cap_et( syh_el *syh)

{ syh_el *

p;

int dey;



p = syh;

if (syh == NULL )

{ std::cout<<"Siyahi boshdur \

n";

return;

} std::cout<<"Siyahinin elementleri \

n";

while(p!=NULL)

{ dey =


p->x;

std::cout<

p = p->novb_el; // novbeti elemente kec

} std::cout<<"\n";

}

Proqramı yerinə yetirək:



C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>prog2.exe

Siyahinin elementlerinin sayini daxil edin

5

siyahinin 1-ci elementini daxil edin

23

siyahinin 2 -ci elementini daxil edin

45

siyahinin 3 -ci elementini daxil edin

567

siyahinin 4 -ci elementini daxil edin

1

siyahinin 5-ci elementini daxil edin

789

Siyahinin elementleri 23 45 567 1 789

C:\cpp\prog2\Debug>

C:\cpp\prog2\Debug>

9.2 Siyahılardan elementlərin silinməsi.

Biz qeyd etdik ki, siyahılara proqramın icrası boyu istədiymiz zaman istədiyimiz qədər yeni

obyekt əlavə edə və siyahıda olan obyektləri silə bilərik. Gəlin indi də siyahıdan elementlərin

silinməsi qaydasını gцstərək.

Tutaq ki, bizim 5 obyekti olan aşağıdakı kimi siyahımız var:

Əlbəttdə siyahının aşağısında gцstərdiyimiz nцmrələrin siyahı ilə heз bir əlaqəsi yoxdur,

sadəcə konkret obyektlərə mьraciəti asanlaşdırmaq ьзьn gцstərmişik. Biz bu siyahıdan

ьзьncь obyekti silmək istəyirik. Əvvəlcə qrafik şəkildə gцrəcəyimiz işi təsvir edək, daha

sonra mьvafiq proqram kodunu daxil edərik. Bunun ьзьn ilk olaraq 2-ci obyektin 3-cь obyektə

olan istinadın 4-cь obyektə mənimsədirik:

Daha sonra 3-cь obyektin 4-cь obyektə olan istinadın ləğv edirik.

Hal-hazırda biz qarşımıza qoyduğumuz məqsədə nail olmuşuq, artıq siyahıdan 3-cь obyekt

kənar edilib və 2-ci obyekt birbaşa 4-cь obyektə birləşir.

Amma 3-cь obyekt hələ-də yaddaşdadır və əgər o bizə lazım deyilsə biz onu yaddaşdan

silməliyik.

Gцr c yimiz iş il tanış olduq, indi is g lin bu işi yerin yetir ə ə ə ə ə ə ən mьvafiq proqram kodunu

daxil edək. Sadəlik ьзьn siyahı tipi olaraq yuxarıda elan etdiyimiz syh_el tipindən istifadə

edək. Tutaq ki, syh_el * tipindən olan syh dəyişəni elan olunub(siyahının başlanğıcı) və

siyahıya 5 element əlavə olunub.

syh_el * tipindən olan p və q dəyişənlərini elan edək.

struct syh_el *p, *q;

p -ni siyahının başlanğıcına mənimsədək.



p = syh;

p -ni siyahının ikinci obyekti ьzərinə sьrьşdьrək.



p = p->novb_el;

q -nь də ikinci obyektə mənimsətməliyik.

Bu bizə ikinci obyektin novb_el həddinə mьraciət etməyə imkan verəcək. Hal-hazırda p ikinci

obyektə istinad etdiyindən daha siyahının əvvəldən başlamağa ehtiyac yoxdur.

Sadəcə yazırıq:


Yüklə 0,74 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8   9   10   11




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə