3. C++ dasturlash tilida xususiy konteynerlar yaratish
Ma’lumotlar konteynerlarini yaratishda C++ tilining C tilidan meros
qilib olgan structuralardan foydalaniladi. Dasturlash tillaridagi imkoniyatlari
ichida C/C++ tillining ko’rsatkichlar bilan ishlash imkoniyati yuqori hisoblanadi
shuning uchun biz ma’lum konteynerlarni o’zimiz xotiraga bevosita murojat
qilish orqali yaratishimiz mumkin.
Ma’lumotlar konteynerlarini yaratishda quyidagi konteynerlarni ko’rib
chiqamiz.
Stack
Navbat
Ro’yxat
Binar daraxt (Binary tree)
Dastur yechimi
STACK ko’rinishidagi konteyner
#include
#include
#include
#include
using namespace std;
struct Node//stack uchun kontener
{
int info;
Node *pointer;
};
Node *first(int d);//birinchi elementni qo'shish void push(Node **top, int d);//yangi element qo'shish
int pop(Node **top);//elementni o'chirish
int main()
{
Node *top =first(1);
for(int i=2;i<6;i++) push(&top,i);
while(top)
{ cout<
cout<
}
return 0;
}
Node *first(int d)
{
Node *pv=new Node;//yangi kontener yaratish
pv->info=d;//yangi kontenerni ma'lumot yacheykasiga d ma'lumotni
qo'yamiz
pv->pointer=0;//keyingi element hali yo'q nol gs tenglaymiz
return pv;//kontener addressini qaytaramiz
}
void push(Node **top, int d)
{
Node *pv=new Node;//yangi kontener yaratish
pv->info=d;//yangi kontenerni ma'lumot yacheykasiga d ma'lumotni qo'yamiz
pv->pointer=*top;////yangi kontenerni keyingi oldigi kontener bilan bog'laymiz
*top=pv;//stack boshiga yangi elemntni qo'yamiz
}
int pop(Node **top)
{
int temp=(*top)->info;//kontenerdagi ma'lumotni tempga olamiz
Node *pv=*top;//yangi kontenerga stack boshini beramiz
*top=(*top)->pointer;//stack boshini keyingi elementga o'tkazib
delete pv;//dinamik ajratilgan joyni o'chiramiz
return temp;//ma'lumotni qaytaramiz
}
Navbat ko’rinishidagi konteyner
#include
#include
using namespace std;
struct Node//navbat uchun kontener
{
int d;
Node *pointer;
};
Node* first(int d);//birinchi elementni qo'shish
void add(Node **pend, int d);//yangi element qo'shish
int remove_items(Node **pbegin);//elementni o'chirish
int main()
{
Node *pbeg=first(1);
|