Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 31.03.2010
Сообщений: 28
1

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

09.01.2011, 00:22. Просмотров 965. Ответов 5
Метки нет (Все метки)


Дано вот такое задание:В двухсвязном кольцевом списке определить минимальный и максимальный элементы,а затем заменить их значения на сумму этих элементов
Вроде и простое задание,но у меня не получаеться Помогите с кодом пожалуйста
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.01.2011, 00:22
Ответы с готовыми решениями:

Двухсвязный список: переделать код, чтобы пользователь мог сам вводить в список данные?
Добрый день. Есть двухсвязнный список.#include <iostream> using namespace std; struct Node ...

двухсвязный список
#include "stdafx.h" #include <iostream> #include <locale.h> #include <string> using namespace...

двухсвязный список
У меня ошибку выдает, а какую я не знаю, просто вылетает сразу после того как ввела список...

Двухсвязный Список
Здравствуйте, у меня такая проблема : делаю меню для двухсвязного списка. В операции добавления...

5
2226 / 1729 / 865
Регистрация: 21.12.2010
Сообщений: 3,073
Записей в блоге: 11
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;
}
0
3053 / 1458 / 492
Регистрация: 29.11.2010
Сообщений: 2,888
09.01.2011, 09:40 3
igorrr37, а удалить список?
0
2226 / 1729 / 865
Регистрация: 21.12.2010
Сообщений: 3,073
Записей в блоге: 11
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;
}
1
3053 / 1458 / 492
Регистрация: 29.11.2010
Сообщений: 2,888
09.01.2011, 10:43 5
Во. Теперь выглядит кошерно. )
1
0 / 0 / 0
Регистрация: 31.03.2010
Сообщений: 28
09.01.2011, 22:14  [ТС] 6
Спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2011, 22:14

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Двухсвязный список и оператор []
Здравствуйте! Очень нужна помощь, так как 4 часа поисков в интернете не дали конкретных...

перевернуть двухсвязный линейный список
Здравствуйте скиньте кто нибудь код перевората двухсвзнакого линейного списка, меняя только...

Добавление элементов в двухсвязный список
Надо создать двухсвязный список и надо реализовать добавление и удаление элементов: в начале, в...

Создать линейный односвязный и двухсвязный список
Нужна помощь,задание: Создать линейный односвязный список.Из списка удалить элемент стоящий перед...


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

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

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