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