Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Приклади_видалення.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
100 Кб
Скачать
☆

Void Spisok::udalenie1()

{

node *q,*q1,*q2;

q = Res->next;

if (q!=NULL)

{

Res->value = q->value;

Res->next = q->next;

delete q;

}

else

{

q1 = phead;

q2 = q1->next;

while (q2!=Res)

{

q1 = q2;

q2 = q2->next;

}

q1->next = NULL;

q2 = NULL;

delete Res;

}

}

ЗАДАЧА.

Побудувати список, в якому зберігається база відділу кадрів підприємства. Кожен запис бази містить відомості про одного співробітника. Формат запису: прізвище і ініціали (30 поз., прізвище повинне починатися з першої позиції), рік народження (5 поз.), оклад (10 поз.). Програма повинна забезпечувати пошук в базі по заданих критеріях, коректування і доповнення бази.

#include <iostream.h>

#include <string.h>

#include <windows.h>

const int l_name = 31;

struct Man

{

char name[l_name];

int birth_day;

float pay;

Man* next;

};

class Spisok

{

private:

Man* phead;

Man* Res;

public:

Spisok()

{

phead = new Man;

phead->next=NULL;

Res=NULL;

}

~Spisok()

{

delete phead;

}

void POSTROENIE();

void VYVOD();

Man* POISK (char* n, int bd, float p);

void VSTAVKA (char* n1, int bd1, float p1);

void VSTAVKA1 (char* n1, int bd1, float p1);

void UDALENIE();

void UDALENIE1();

void OCHISTKA();

};

--------------------------------------------------------------------------

int main()

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

char name[l_name], name1[l_name];

int day, day1;

float pay, pay1;

int n=0;

Spisok A;

while (true)

{

cout<<"\nМЕНЮ:\n";

cout<<"Построить список: 1\n";

cout<<"Найти элемент списка: 2\n";

cout<<"Вставить элемент списка, после: 3\n";

cout<<"Вставить элемент списка, перед: 4\n";

cout<<"Удалить элемент списка, после: 5\n";

cout<<"Удалить выбранный элемент списка: 6\n";

cout<<"Вывести список: 7\n";

cout<<"Выход: 8\n";

cin >> n;

switch (n)

{

case 1: A.POSTROENIE();

break;

case 2: cout<<"\nВведите данные сотрудника, которого ищите в списке.\n";

cout<<"Введите фамилию и инициалы: ";

cin.get();

cin.getline(name, l_name);

cout<<"Введите год рождения: ";

cin >> day;

cout<<"Введите оклад: ";

cin >> pay;

if (A.POISK(name, day, pay)!= NULL)

cout<<"\nДанный сотрудник в списке есть!\n";

else

cout<<"\nДанного сотрудника в списке нет!\n";

break;

case 3: cout<<"\nВведите данные сотрудника, после которого осуществляется вставка.\n";

cout<<"Введите фамилию и инициалы: ";

cin.get();

cin.getline(name, l_name);

cout<<"Введите год рождения: ";

cin >> day;

cout<<"Введите оклад: ";

cin >> pay;

cin.get();

cout<<"Введите данные сотрудника которого помещаете в список\n";

cout<<"Введите фамилию и инициалы: ";

cin.getline(name1, l_name);

cout<<"Введите год рождения: ";

cin >> day1;

cout<<"Введите оклад: ";

cin >> pay1;

if (A.POISK(name, day, pay)!= NULL)

A.VSTAVKA(name1, day1, pay1);

else

cout<<"\nДанного сотрудника в списке нет!\n";

break;

case 4: cout<<"\nВведите данные сотрудника, перед которым осуществляется вставка\n";

cout<<"Введите фамилию и инициалы: ";

cin.get();

cin.getline(name, l_name);

cout<<"Введите год рождения: ";

cin >> day;

cout<<"Введите оклад: ";

cin >> pay;

cin.get();

cout<<"Введите данные сотрудника которого помещаете в список:\n";

cout<<"Введите фамилию и инициалы: ";

cin.getline(name1, l_name);

cout<<"Введите год рождения: ";

cin >> day1;

cout<<"Введите оклад: ";

cin >> pay1;

if (A.POISK(name, day, pay)!= NULL)

A.VSTAVKA1(name1, day1, pay1);

else

cout<<"\nДанного сотрудника в списке нет!\n";

break;

case 5: cout<<"\nВведите данные сотрудника после которого\n";

cout<<" хотите удалить элемент списка\n";

cout<<"Введите фамилию и инициалы: ";

cin.get();

cin.getline(name, l_name);

cout<<"Введите год рождения: ";

cin >> day;

cout<<"Введите оклад: ";

cin >> pay;

if (A.POISK(name, day, pay)!= NULL)

A.UDALENIE();

else

cout<<"\nДанного сотрудника в списке нет!\n";

break;

case 6: cout<<"\nВведите данные сотрудника которого хотите удалить из списка:\n";

cout<<"Введите фамилию и инициалы: ";

cin.get();

cin.getline(name, l_name);

cout<<"Введите год рождения: ";

cin >> day;

cout<<"Введите оклад: ";

cin >> pay;

cin.get();

if (A.POISK(name, day, pay)!= NULL)

A.UDALENIE1();

else

cout<<"\nДанного сотрудника в списке нет!\n";

break;

case 7: A.VYVOD ();

break;

case 8: A.OCHISTKA ();

return 0;

break;

default : cout<<"\nВведите цифру от 1 до 8!\n";

}

}

return 0;

}

--------------------------------------------------------------------------