Программалау оқулық Алматы, 012 Қазақстан Республикасы Білім жəне ғылым министрлігінің «Оқулық»



Pdf көрінісі
бет123/466
Дата20.07.2022
өлшемі3,66 Mb.
#37798
түріПрограмма
1   ...   119   120   121   122   123   124   125   126   ...   466
Байланысты:
pavlovskaia-jogargy-dengeili

Node *pv = new Node;
pv->d = d; pv->next = 0; pv->prev = 0;
return pv;
}


126
//--------------------------------------------------
// Тізімнің соңына қосу
void add(Node **pend, int d){
Node *pv = new Node;
pv->d = d; pv->next = 0;
pv->prev = *pend;
(*pend)->next = pv;
*pend = pv;
}
//--------------------------------------------------
// Элементті кілті бойынша іздеу
Node * fi nd(Node * const pbeg, int d){
Node *pv = pbeg;
while (pv){
if(pv->d == d)break;
pv = pv->next;
}
return pv;
}
//--------------------------------------------------
// Элементті жою
bool remove(Node **pbeg, Node **pend, int key){
if(Node *pkey = fi nd(*pbeg, key)){ // 1
if (pkey == *pbeg)} // 2
*pbeg = (*pbeg)->next;
(*pbeg)->prev =0;}
else if (pkey == *pend){
// 3
*pend = (*pend)->prev; 
(*pend)->next =0;}
else{ 
 
 
 
 
// 4
(pkey->prev)->next = pkey->next;
(pkey->next)->prev = pkey->prev;}
delete pkey;
return true;
 
 
// 5
}
return 
false; 
// 
6
}
//--------------------------------------------------
// Элементті кірістіру
Node * insert(Node * const pbeg, Node **pend, int key, int d){
if(Node *pkey = fi nd(pbeg, key)){
Node *pv = new Node;
pv->d = d;


127
/* 1 – жаңа түйіннің келесі түйінмен байланысын
орнату: */
pv->next = pkey->next;
/* 2 - жаңа түйіннің алдыңғы түйінмен байланысын
орнату: */
pv->prev = pkey;
/* 3 - алдыңғы түйіннің жаңа түйінмен байланысын
орнату: */
pkey->next = pv;
/* 4 - келесі түйіннің жаңа түйінмен байланысын
орнату: */
if( pkey != *pend) (pv->next)->prev = pv;
// Егер түйін тізім соңына қойылса,
// тізім соңына нұсқауышты жаңарту.
else *pend = pv;
return pv;
}
return 0;
}
Программаның жұмысының нəтижесі:
1 2 200 3 4
Функция ішінде өзгертілмейтін барлық параметрлер
 const 
модифика-
торы арқылы берілуі тиіс. Өзгеруі мүмкін нұсқауыштар, (мысалы, тізімнен 
соңғы элементті өшірген кезде тізім соңына нұсқауышты өзгерту керек) адрес 
бойынша беріледі.
remove
 тізімнен элементті өшіру функциясын толығырақ қарастырайық. 
Оның параметрлері ретінде тізім басына жəне тізім соңына нұсқауыштар жəне 
өшірілуі тиіс элементтің кілті қабылданады. 1 жолында 
pkey
жергілікті (ло-
калды) нұсқауышына жады бөлінеді, оған 
fi nd 
элементті кілті бойынша табу 
функциясының нəтижесі меншіктеледі. Егер іздестіру нəтижесі сəтті болса, 
бұл функция элементке нұсқауышты, ал мұндай кілті бар элемент табылмаған 
жағдайда 0 мəнін қайтарады. Егер 
pkey
нөлдік емес мəн қабылдаса, онда
 if
операторындағы шарт ақиқат болады (ондай элемент бар), басқару 2 операторға 
беріледі, əйтпесе 
false
мəнді функциядан қайту орындалады (6 оператор).
Элемент тізімнің басында, соңында немесе ортасында орналасқанына 
байланысты оны тізімнен өшіру əртүрлі болып орындалады. 2 операторға 
өшірілетін элементтің тізім басында орналасу шарты тексеріледі, жауап оң бол-
са, онда 


Достарыңызбен бөлісу:
1   ...   119   120   121   122   123   124   125   126   ...   466




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет