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 операторға
өшірілетін элементтің тізім басында орналасу шарты тексеріледі, жауап оң бол-
са, онда
Достарыңызбен бөлісу: