Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct Node{
- int d;
- Node *next;
- Node *prev;
- };
- void add(Node *&begin, int d){
- Node *cur = new Node;
- cur->d = d;
- cur->next = nullptr;
- if (!begin){
- begin = cur;
- cur->prev = nullptr;
- }
- else {
- Node*temp = begin;
- while (temp->next) temp = temp->next;
- temp->next = cur;
- cur->prev = temp;
- }
- }
- Node* find(Node *begin, int key, int d){ // Поиск элемента по ключу
- Node *cur = begin;
- while (cur){
- if (cur->d == d) break;
- cur = cur->next;
- }
- return cur;
- }
- bool insert(Node *begin, int key, int d){ // Вставка элемента после заданного
- Node *pkey = find(begin, key);
- if (!pkey) return false;
- Node *cur = new Node;
- cur->d = d;
- cur->next = pkey->next; // Установка связи нового узла с последующим
- cur->prev = pkey; // Установка связи нового узла с предыдущим
- pkey->next = cur; // Связь предыдущего узла с новым
- if (cur->next != nullptr)(cur->next)->prev = cur; // Связь последующего узла с новым
- return true;
- }
- void print(Node *begin){ // Вывод списка на экарн
- Node *cur = begin;
- while (cur){
- cout << cur->d << ' ';
- cur = cur->next;
- }
- }
- bool remove(Node *&begin, int key){
- Node *cur = find(begin, key);
- if (!cur) return false;
- if (cur == begin){
- begin = begin->next;
- begin->prev = nullptr;
- }
- else {
- (cur->prev)->next = cur->next;
- if (cur->next != nullptr) (cur->next)->prev = cur->prev;
- }
- delete cur;
- return true;
- }
- int main(){
- Node *begin = nullptr;
- for (int i = 1; i < 6; i++) // Вставка элементов 1,2,3,4,5
- add(begin, i);
- if (!insert(begin, 2, 200)) // Вставка 200 после элемента 2
- cout << "Вставка не выполнена" << endl;
- if (!insert(begin, 5, 500)) // Вставка 500 после элемента 5
- cout << "Вставка не выполнена" << endl;
- if (!remove(begin, 5)) // Удаление элемента 5
- cout << "Удаление не выполнено" << endl;
- print(begin); // Вывод элементов
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement