Односвязные списки #include #include struct spisok { int data; spisok *next; }; spisok *p, *q, *p 2; //p 2 - вспомогатедьный указатель int kol = 0; //Счетчик
void pop(int x) //Создание списка { p = new spisok; p -> next = q; p -> data = x; q = p; kol ++; }
void view() //Просмотр списка { while(p != NULL) { cout << p -> data << endl; //Вывод на экран переменной data p = p -> next; //Переходим на следующий указатель } }
spisok *search(int x) //Поиск числа { spisok *n; p = q; //Присваиваем указателю p начало списка n = NULL; while(p != NULL && p -> data != x)//Выполняем пока не наступил конец { //или не нашли число p = p -> next; //Переход к следующему элементу списка n = p; //Присваиваем порядковый номер числа -- kol; //Уменьшаем счетчик } return n; }
paste(int n, int x) //Вставка элемента { spisok *d; d = new spisok; //Перемещаем указатель списка в конец for (int i = 0; i < kol - n; i ++) p = p -> next; d -> data = x; d -> next = p -> next; p -> next = d; ++ kol; return 0; }
void del(int x) { spisok *n = NULL; int i = 0; p = q; while(p != NULL && p -> data != x) { n = p; p = p -> next; i ++; } if (i == 0) { n = p; p = p -> next; delete n; p 2 = p; } else { n -> next = p -> next; delete p; } }
main(void) { int elem, poisk, d, past, zn_p, max; clrscr(); cout <<"Введите количество элементов -> "; cin >> max; q = NULL; /*Ввод элементов*/ //--------------------------
for(int i = 0; i < max; i ++) { cout <<"Ввод элемента № "< "; cin >> elem; pop(elem); } //--------------------------p 2 = p; clrscr(); cout << "Укажите номер вставки -> "; cin >> past; cout << "Укажите значение которое необходимо вставить -> "; cin >> zn_p; paste(past, zn_p); p = p 2; view(); cout << "Введите элемент для поиска ->"; cin >> poisk; p = p 2; search(poisk);
" << kol << endl; p = p" src="https://present5.com/presentation/9484226_148486981/image-9.jpg" alt="cout << "Номер найденного элемента -> " << kol << endl; p = p" />
cout << "Номер найденного элемента -> " << kol << endl; p = p 2; view(); cout << "Введите элемент для удаления -> "; cin >> d; del(d); p = p 2; view(); getch(); return 0; }