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

Двухсвязный Кольцевой Список - C++

Восстановить пароль Регистрация
 
Prosroma
0 / 0 / 0
Регистрация: 31.03.2010
Сообщений: 28
09.01.2011, 00:22     Двухсвязный Кольцевой Список #1
Дано вот такое задание:В двухсвязном кольцевом списке определить минимальный и максимальный элементы,а затем заменить их значения на сумму этих элементов
Вроде и простое задание,но у меня не получаеться Помогите с кодом пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2011, 00:22     Двухсвязный Кольцевой Список
Посмотрите здесь:

C++ символьный двухсвязный список
C++ Двухсвязный Список
Двухсвязный список и оператор [] C++
C++ перевернуть двухсвязный линейный список
двухсвязный список C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
09.01.2011, 08:09     Двухсвязный Кольцевой Список #2
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
#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
 
struct node{
    int n;
    node *next;
    node *prev;
    node(int x):n(x){}
};
struct list{
    node *head;
    list():head(0){}
    void add(int n){
        node *temp=new node(n);
        if(head==0){
            head=temp;
            temp->next=temp;
            temp->prev=temp;
        }
        else{
            temp->next=head;
            temp->prev=head->prev;
            head->prev->next=temp;
            head->prev=temp;
        }
    }
};
 
int main(){
    srand(time(0));
    list l;
    for(int i=0;i<50;i++){
        l.add(rand()%100-50);
    }
    int max, min;
    node *nmax, *nmin, *temp;
    nmax=nmin=temp=l.head;
    max=min=l.head->n;
    do{
        if(temp->n>max){
            max=temp->n; nmax=temp;
        }
        if(temp->n<min){
            min=temp->n; nmin=temp;
        }
        temp=temp->next;
    } while(temp!=l.head);
    cout<<"nmax= "<<nmax<<", max= "<<nmax->n<<"\nnmin= "<<nmin<<", min= "<<nmin->n<<endl;
    nmin->n=nmax->n=max+min;
    cout<<"after exchange\n";
    cout<<"nmax= "<<nmax<<", max= "<<nmax->n<<"\nnmin= "<<nmin<<", min= "<<nmin->n<<endl;
}
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
09.01.2011, 09:40     Двухсвязный Кольцевой Список #3
igorrr37, а удалить список?
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
09.01.2011, 10:27     Двухсвязный Кольцевой Список #4
lemegeton,
есть такая функция
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
#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
 
struct node{
    int n;
    node *next;
    node *prev;
    node(int x):n(x){}
};
struct list{
    node *head;
    list():head(0){}
    void add(int n){
        node *temp=new node(n);
        if(head==0){
            head=temp;
            temp->next=temp;
            temp->prev=temp;
        }
        else{
            temp->next=head;
            temp->prev=head->prev;
            head->prev->next=temp;
            head->prev=temp;
        }
    }
    void dellist(){
        node *temp=head->prev->prev;
        head->prev=0;
        while(temp->prev!=0){
            delete temp->next;
            temp->next=0;
            temp=temp->prev;
        }
            delete head;
            head=0;
    }
};
 
int main(){
    srand(time(0));
    list l;
    for(int i=0;i<50;i++){
        l.add(rand()%100-50);
    }
    int max, min;
    node *nmax, *nmin, *temp;
    nmax=nmin=temp=l.head;
    max=min=l.head->n;
    do{
        if(temp->n>max){
            max=temp->n; nmax=temp;
        }
        if(temp->n<min){
            min=temp->n; nmin=temp;
        }
        temp=temp->next;
    } while(temp!=l.head);
    cout<<"nmax= "<<nmax<<", max= "<<nmax->n<<"\nnmin= "<<nmin<<", min= "<<nmin->n<<endl;
    nmin->n=nmax->n=max+min;
    cout<<"\nafter exchange\n";
    cout<<"nmax= "<<nmax<<", max= "<<nmax->n<<"\nnmin= "<<nmin<<", min= "<<nmin->n<<endl;
    l.dellist();
    cout<<"\nhead= "<<l.head;
}
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
09.01.2011, 10:43     Двухсвязный Кольцевой Список #5
Во. Теперь выглядит кошерно. )
Prosroma
0 / 0 / 0
Регистрация: 31.03.2010
Сообщений: 28
09.01.2011, 22:14  [ТС]     Двухсвязный Кольцевой Список #6
Спасибо
Yandex
Объявления
09.01.2011, 22:14     Двухсвязный Кольцевой Список
Ответ Создать тему
Опции темы

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