Форум программистов, компьютерный форум CyberForum.ru

Удаление максимального элемента из списка с предыдущим элементом - C++

Восстановить пароль Регистрация
 
Ilnurvampire
1 / 1 / 0
Регистрация: 26.10.2012
Сообщений: 18
24.04.2013, 00:57     Удаление максимального элемента из списка с предыдущим элементом #1
Удаление максимального элемента из списка с предыдущим элементом
Вот набросок программы, который удаляет максимальный элемент. Подскажите пожалуйста, как организовать удаление предыдущего элемента
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
struct List
{
    int data;
    List *next;
    List *prev;
};
List *AddLast(List *begin, int a);
List *Make_List(int n)
{
    List *first=NULL;
int a;
for(int i=0;i<n;i++)
 {
    cin>>a;
    first=AddLast(first,a);
 }
return first;
};
 
List *AddLast(List *begin, int a)//добавление элементов в конец
{
if (begin==NULL)
{begin=new List;
begin->data=a;
begin->next=NULL;
begin->prev=NULL;
    return begin;}
else
    {
    List *current =begin;
    while (current->next!=NULL)
    current=current->next;
    List *Add=new List;
    Add->data=a;
    Add->next=NULL;
    Add->prev=current;
    current->next=Add;
    return begin;}
    }
void Print_List(List*first)//вывод списка
    { 
    if(first==NULL)
    cout<<"Список пуст";
    else
    {
    List *current=first;
while (current!=NULL)
{cout<<current->data<<" ";
current=current->next;
}}
cout<<endl;
}
 
 
int search_max(List *begin)//поиск макс. элемента
{
    
    List *current=begin;
    int max=current->data;
    while(current!=NULL)
    {
        if(current->data>max)
         max=current->data;
         current=current->next;
    }
    return max;
}
 
List *Delete(List *begin, int max_l)//удаление макс. элемента
{
    if (begin!=NULL)
      {
          if(begin->data==max_l)
          {
              List *current=begin;
              
              begin=begin->next;
              
              
              
              delete current;
              //delete previous;
              return begin;
          }
          else 
          {
              List *current=begin;
              while ((current!=NULL)&&(current->data!=max_l))
              current=current->next;
              if(current!=NULL)
              {
                  current->prev->next=current->next;
                  if (current->next!=NULL)
                  (current->next)->prev=current->prev;
                  delete current;
                  return begin;
              }
              
          }
      }
}
 
 
int main()
{
    List *begin=NULL;
    int option;
 int n;
 int max_l;
 
cout<<"1-заполнить список\n";
cout<<"2-вывод списка\n";
cout<<"3-удаление\n";
 while(1)
 
 {
     cout<<"Введите команду: ";
     cin>>option;
     switch (option)
     {
         case 1:
 cout<<"введи количество элементов: ";
 cin>>n;
 begin=Make_List(n);
         break;
         case 2:
 Print_List(begin);
         break;
         case 3:
 max_l=search_max(begin);
 //cout<<"max element"<<max_l;
         begin=Delete(begin,max_l);
         cout<<"максимальный элемент удалён\n";
         break;
     }
 }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2013, 00:57     Удаление максимального элемента из списка с предыдущим элементом
Посмотрите здесь:

Перенос в начало списка его максимального элемента, а в конец минимальный C++
C++ После максимального элемента списка L вставить заданный элемент a.
C++ После максимального элемента списка L вставить заданный элемент a.
C++ Удаление максимального элемента массива, если все элементы разные
C++ Удаление максимального элемента списка
Структура: Организовать поиск элемента и проверку на совпадение его с минимальным элементом списка. C++
C++ Удаление элемента из списка и поиск элемента
Удаление элемента списка и всего списка C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
tadom
 Аватар для tadom
13 / 13 / 0
Регистрация: 28.03.2013
Сообщений: 22
24.04.2013, 11:29     Удаление максимального элемента из списка с предыдущим элементом #2
Цитата Сообщение от Ilnurvampire Посмотреть сообщение
с предыдущим элементом
Ето елемент в которого
1)индекс меньше на 1 чем максимального;
2)он просто меньший от максимального и больше все остальних?
для (1):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
     switch (option)
     {
         case 1:
 cout<<"введи количество элементов: ";
 cin>>n;
 begin=Make_List(n);
         break;
         case 2:
 Print_List(begin);
         break;
         case 3:
 max_l=search_max(begin);
 //cout<<"max element"<<max_l;
         begin=Delete(begin,max_l);
         begin = Delete(begin,max_l - 1);
         cout<<"максимальный и предыдущий элемент удалён\n";
         break;
     }
для (2):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
     switch (option)
     {
         case 1:
 cout<<"введи количество элементов: ";
 cin>>n;
 begin=Make_List(n);
         break;
         case 2:
 Print_List(begin);
         break;
         case 3:
 max_l=search_max(begin);
 //cout<<"max element"<<max_l;
         begin=Delete(begin,max_l);
          max_l=search_max(begin);//еще раз, но только теперь предыдущий
         begin=Delete(begin,max_l);
         cout<<"максимальный и предыдущий элемент удалён\n";
         break;
     }
Yandex
Объявления
24.04.2013, 11:29     Удаление максимального элемента из списка с предыдущим элементом
Ответ Создать тему
Опции темы

Текущее время: 00:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru