lt);
}
};
# pragmaonce
# include user_data.h
//узелспіска, двусвязного_user_data {
//дані узла_datadata;
//покажчик на попередній
node_user_data * prev;
//покажчик наследующий
node_user_data * next;
}; user_data_list {
//покажчик на перший елемент_user_data * first;
//покажчик на останній елемент
node_user_data * last;
//розмір списку
int size;
//функція для початкової ініціалізації
void init () {= 0;=NULL; =NULL;
}
//додавання в початок списку
void add_front (user_data pdata) {
//якщо список порожній (size == 0) {
//виділяємо пам'ять=new node_user_data ();
//записуємо дані gt; data=pdata;
//обнуляем покажчика на слід і перед
first- gt; next=NULL; gt; prev=NULL;
//останній він же буде і першим=first;
//збільшуємо розмір ++;
}
//якщо списку не порожній {
//виділяємо память_user_data * temp=new node_user_data ();
//записуємо дані gt; data=pdata;
//покажчик на слід тепер вказуємо на перший
temp- gt; next=first;
//попереднього немає gt; prev=NULL;
//покажчик на попередній першого елемента вказує на новий елемент gt; prev=temp;
//новий елемент стає першим=temp;
//збільшуємо розмір ++;
};
}
//додавання в кінець спіскаadd_back (user_data pdata) {
//якщо список порожній (size == 0) {
//виділяємо пам'ять=new node_user_data ();
//записуємо дані gt; data=pdata;
//покажчики на перед і слід не існують
last- gt; next=NULL; gt; prev=NULL;
//перше він же останній=last;
//збільшуємо розмір ++;
}
//якщо списку не порожній
else {
//виділяємо память_user_data * temp=new node_user_data ();
//записуємо дані gt; data=pdata;
//покажчик на попередній нового елемента вказує на останній елемент gt; prev=last;
//покажчик на слід нового елемента порожній gt; next=NULL;
//покажчик на наступний останнього вказує тепер на новий елемент gt; next=temp;
//новий елемент тепер останній=temp;
//збільшуємо розмір ++;
};
}
//функція для видалення по індексуrem (int index) {
//якщо видаляти нічого, то виводь на екран попередження
if (size == 0) {( Спісокпуст! n );
system ( pause );
//якщо видаляємо перший елемент
} else if (index == 1 amp; amp; index!=size) {
//запам'ятовуємо його указатель_user_data * temp=first;
//знімаємо пов'язаний з першим елементом покажчик на попередній gt; next- gt; prev=NULL;
//тепер перший елемент - це наступний за першим=first- gt; next;
//видаляємо запомненний першого елементtemp;
//зменшуємо розмір -;
//якщо видаляємо останній, то приблизно теж саме відбувається
} else if (index == size amp; amp; index!=1) {_user_data * temp=last; gt; prev- gt; next=NULL;=last- gt; prev;
delete temp; -;
//якщо видаляємо елемент, який є єдиним в списку
} else if (index == size amp; amp; index == 1) {
//просто удаляемfirst;
//обнуляем покажчики на перший і останній елементи
first=NULL;=NULL;
//зменшуємо розмір -;
//якщо видаляємо з середини списку
} else if (index gt; 1 amp; amp; index lt; size) {
node_user_data * current=first;
//в циклі ...