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 və 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 və 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:
Dostları ilə paylaş: |