Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
LifeWind
4 / 4 / 1
Регистрация: 13.09.2012
Сообщений: 36
#1

Обмен двух элементов в спике - C++

15.06.2013, 14:08. Просмотров 422. Ответов 1
Метки нет (Все метки)

Здравствуйте, вот задача: дан список из n элементов a1, a2, .. an. Поменять местами первый из минимальных и последний из положительных элементов списка. Вопрос вот в чем: как поменять эти элементы в списке? Пробовал, не получается, если только обменять их данные, но это не подходит по заданию, так как нужно обменять сами элементы. Напишите пожалуйста правильно.
Вот код:
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
#include <iostream>
#include <iomanip>
using namespace std;
 
struct list
{
int info;
list *next, *pred;
};
 
//makelist формирует двухсвязный список с двумя сторожами
void makelist(list *&head, list *&tail)
{
head=new list;
tail=new list;
head->next=tail;
tail->pred=head;
int k,n;
cout<<"Введите количество элементов: "<<endl;
cin>>n;
cout<<"Вводите числа: "<<endl;
for(int i=0;i<n;i++)
{
    cin>>k;
    list*p=new list;
    p->info=k;
    p->next=tail;
    p->pred=tail->pred;
    tail->pred=p;
    p->pred->next=p;
}
return;
}
 
void printlist(list *head, list *tail) //вывод списка на экран
{
list *a=head;
while(a!=tail->pred)
{
cout<<a->next->info<<" ";
a=a->next;
}
cout << endl;
return;
}
 
void min(list *head, list *tail)//находит первый минимальный и последний положительный и меняет местами
{
    list *a=head->next;
    list *b=tail->pred;
    list *m, *p, *t;
    p=a;
    m=a;
    while(a!=tail)
    {
        if(a->info < m->info)
        m=a;
        if(a->info > 0)   
        p=a;
        a=a->next;
    }
    cout << m->info << endl << p->info <<endl;
    t=new list;  
    t->info=m->info;//вот здесь я просто меняю местами их info, а нужно поменять сами элементы местами
    m->info=p->info;
    p->info=t->info;
 
    return;
}
 
void main()
{  
    setlocale(LC_ALL, "Russian" );
    list * head, * tail;
    makelist(head,tail);
    printlist(head,tail);
    cout << endl;
    min(head,tail);
    printlist(head,tail);
    return;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.06.2013, 14:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обмен двух элементов в спике (C++):

обмен элементов двух массивов. В чем ошибка - C++
начал изучать работу с двумя массивами и застрял. Объясните почему после сортировки на энран вылазит ошибка а не то что нужно /*...

Обмен значениями двух переменных - C++
Нашёл на другом форуме занятную формулу обмена значений двух переменных(очевидно на с++): b = – –a + (a=b)*0; Проверил на числах 1 и...

Обмен местами двух заданных поддеревьев - C++
Собственно, вопрос заключается в том, чтобы реализовать обмен местами двух заданных поддеревьев на C++.

Обмен содержимым двух текстовых файлов - C++
сделал программу по копипасту содержимого второго файла в конец первого,а нужно было сделать обмен,не понимаю как сделать

Обмен первыми половинами двух стеков - C++
Помогите, пожалуйста, нужно написать программу обмены первыми половинами двух стеков.

Обмен значениями двух чисел через указатели и функцию - C++
Должны использоваться аргументы типа ( int * ) Вот код: #include &lt;iostream&gt; void exchange ( int * v1, int * v2 )...

1
Desu_Is_A_Lie
62 / 62 / 3
Регистрация: 26.02.2012
Сообщений: 114
15.06.2013, 16:19 #2
C++
1
2
3
4
5
6
m->next.pred = p;
m->pred.next = p;
p->next.pred = m;
p->pred.next = m;
std::swap(m->next, p->next);
std::swap(m->pred, p->pred);
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2013, 16:19
Привет! Вот еще темы с ответами:

Определить процедуру, осуществляющую обмен значениями двух переменных - C++
Составить программу, в результате которой величина а меняется значением с величиной b, а величина с с величиной d(Определить процедуру,...

Обмен значениями двух переменных А и В без использования вспомогательной переменной - C++
Сконструировать алгоритм обмена значениями двух переменных А и В без использования вспомогательной переменной

Обмен между значениями двух переменных, не используя при этом третьей переменной - C++
Подскажите как написать программу, которая производит обмен между значениями двух переменных, не используя при этом третьей переменной

обмен элементов в массиве - C++
помогите исправить ошибки в коде /*programma reshaet zadachu:sosedom elementa Aij матрицы называется другой элемент Alk этой же ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.