Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <locale>
- using namespace std;
- //Очередь. Тип поля - int . Удалить из списка все элементы с четными информационными полями.
- struct point{
- char* data = new char[10];
- point* next;
- point* pred;
- };
- void print_list(point* beg)
- //печать списка
- {
- point* p = beg;//начало списка
- while (p != 0)
- {
- cout << p->data << "\t";
- p = p->next;//переход к следующему элементу
- }
- }
- void print_list2(point* beg)
- //печать списка
- {
- point* p = beg;//начало списка
- while (p != 0)
- {
- cout << p->data << "\t";
- p = p->pred;//переход к следующему элементу
- }
- }
- point* make_list(int n)
- {
- point*beg;//указатель на первый элемент
- point*p, *r;//вспомогательные указатели
- beg = new(point);//выделяем память под первый элемент
- cout << "Инф. поле ?" << endl;
- cin >> beg->data;//вводим значение информационного поля
- beg->next = 0;//обнуляем адресное поле
- beg->pred = 0;
- //ставим на этот элемент указатель p (последний элемент)
- p = beg;
- for (int i = 0; i<n - 1; i++)
- {
- r = new(point);//создаем новый элемент
- cout << "Инф. поле ?" << endl;
- cin >> r->data;
- r->next = 0;
- r->pred = p;
- p->next = r;//связываем p и r
- //ставим на r указатель p (последний элемент)
- p = r;
- }
- return beg;//возвращаем beg как результат функции
- }
- point* add_point(point* beg, int k, char* data)
- //добавление элемента с номером k
- {
- point*p = beg;//встали на первый элемент
- point*New = new(point);//создали новый элемент
- New->data = data;
- New->pred = NULL;
- if (k == 0)//добавление в начало, если k=0
- {
- New->next = beg;
- beg->pred = New;
- beg = New;
- return beg;
- }
- for (int i = 0; i<k - 1 && p != 0; i++)
- p = p->next;//проходим по списку до(k-1) элемента или до конца
- if (p != 0)//если k-й элемент существует
- {
- New->next = p->next;
- p->next->pred = New;
- New->pred = p;
- p->next = New;
- }
- return beg;
- }
- void main(){
- setlocale(LC_ALL, "rus");
- int n,N;
- char* data = new char[10];
- cout << "Введите кол-во элементов" << endl;
- cin >> n;
- point* beg = make_list(n);
- cout << "Исходный список : " << endl;
- print_list(beg);
- cout << endl;
- cout << "Введите номер элемента перед которым нужно вставить" << endl;
- cin >> N;
- cout << "Введите инф. поле добавляемого элемента" << endl;
- cin >> data;
- cout << "Список после обработки : " << endl;
- add_point(beg, N - 1, data);
- print_list(beg);
- cout << endl;
- point* p;
- p = beg;
- while (p->next != NULL){
- p = p->next;
- }
- print_list2(p);
- cout << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment