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

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

Войти
Регистрация
Восстановить пароль
 
Bishoper
0 / 0 / 0
Регистрация: 14.09.2013
Сообщений: 9
#1

Двунаправленный линейный список - C++

14.09.2013, 20:39. Просмотров 433. Ответов 1
Метки нет (Все метки)

Нужно сделать из двунаправленного линейного списка, циклический и найти ср. аримфетическое. Мои попытки сделать двунаправленный циклический список не увенчались успехом.

C++ (Qt)
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<stdio.h>
#include<stdlib.h>
#include<math.h>
 
const int n=5;//кол-во элементов
struct List//структура
{int data;
List *next,*prev;};
 
int main()
{
List *p,*root,*q,*fin;//создание указателей
int i,k;
float mean,Summ;
printf("Vvedite mass iz %i elementov\n",n);
root=new List;//создание первого элемента
scanf("%i",&root->data);
root->next=NULL;
root->prev=NULL;
fin=root;
for(i=1;i<n;i++)//создание остальных элементов
{
q=new List;
scanf("%i",&q->data);//считывание с клавы
q->next=NULL;
q->prev=fin;
fin->next=q;
fin=q;}
 
printf("\npolutch massiv\n");//полученный массив
q=root;//начало просмотра полученного массива
while(q!=NULL)
{
printf("%i ",q->data);
q=q->next;
}
Summ=0;
k=0;
q=root;//просто идем по списку
while(q!=NULL)
{
Summ+=q->data;//и складываем в нем все элементы
k++;//одновременно с этим считаем сколько у нас элементов
q=q->next;
}
//когда все заканчивается
mean=Summ/k;//делим нашу сумму на кол-во насчитанных элементов
 
printf("\n");
printf(" Summa el-ov=%.2f\n kol-vo el-ov=%i\n Sr.ar.= %.2f",Summ,k,mean);
printf("\n");
system("pause");
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2013, 20:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Двунаправленный линейный список (C++):

Двунаправленный линейный список - C++
Доброго времени суток! Я перевелся на 2ой курс в институте, где изучали С++, которого у меня не было. Поэтому спрашиваю вас - что такое...

Линейный двунаправленный список - C++
Есть такое задание: Линейный двунаправленный список, упорядоченный по возрастанию. Я реализовал Линейный однонаправленный список,...

Линейный двунаправленный список - C++
Имеются сведения о больницах:название, количество мест, количество больных. 1. Создать линейный двунаправленный список. 2....

Двунаправленный линейный список строк - C++
Двунаправленный линейный список строк. Нужно сформировать список, вывести его и добавить новые элементы. Если кто-то может помочь большое...

Линейный двунаправленный список из вещественных чисел - C++
Cоздать линейный двунаправленный список из вещественных чисел. Удалить из списка элементы, у который дробная часть больше 0,5.

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
14.09.2013, 21:26 #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
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
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
 
const int n=5;//кол-во элементов
struct List//структура
{int data;
List *next,*prev;};
 
int main()
{
List *p,*root,*q,*fin;//создание указателей
int i,k;
float mean,Summ;
printf("Vvedite mass iz %i elementov\n",n);
root=new List;//создание первого элемента
scanf("%i",&root->data);
root->next=NULL;
root->prev=NULL;
fin=root;
for(i=1;i<n;i++)//создание остальных элементов
{
q=new List;
scanf("%i",&q->data);//считывание с клавы
q->next=NULL;
q->prev=fin;
fin->next=q;
fin=q;}
 
printf("\npolutch massiv\n");//полученный массив
q=root;//начало просмотра полученного массива
while(q!=NULL)
{
printf("%i ",q->data);
q=q->next;
}
Summ=0;
k=0;
q=root;//просто идем по списку
while(q!=NULL)
{
Summ+=q->data;//и складываем в нем все элементы
k++;//одновременно с этим считаем сколько у нас элементов
q=q->next;
}
//когда все заканчивается
mean=Summ/k;//делим нашу сумму на кол-во насчитанных элементов
 
printf("\n");
printf(" Summa el-ov=%.2f\n kol-vo el-ov=%i\n Sr.ar.= %.2f",Summ,k,mean);
printf("\n");
 
                                   
                                   
                                   //+++++
                                   //+++++
                                   //+++++
                                   //+++++
 
//Тут всё просто. Надо чтобы поле prev последнего элемента списка
//содержало адрес последнего элемента и чтобы поле next последнего
//элемента содержало адрес первого элемента
 
    q=root;//просто идем по списку
    while(q!=NULL)
    {
        //коль скоро у нас есть укащзатель p надо его использовать; хотя могли бы привязаться 
        //к числу n и сделать цикл из n итераций
        p= q;
        q= q->next;
    }
 
//сейчас p содержит адрес последнего элемента
    p->next= root;
    root->prev= p;
    
    //Просмотр 13 (в принципе можно сколько угодно) раз:
    q=root;
    for (int i= 0; i< 13; i++) {
        printf("%d\n", q-> data);
        q= q->next;
    }           
 
                                   //+++++
                                   //+++++
                                   //+++++
                                   //+++++
 
 
 
system("pause");
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.09.2013, 21:26
Привет! Вот еще темы с ответами:

Вставить в линейный список перед элементом с заданным значением другой линейный список - C++
Как можно вставить в линейный список перед элементом с заданным значением другой линейный список? Как один элемент вставлять, я знаю, а вот...

двунаправленный список - C++
Используя двунаправленный список, написать программу сложения двух длинных целых чисел. Что такое двунаправленный список понимаю, но как...

Двунаправленный список - C++
Как создать двунаправленный список из целых чисел? и как заменить повторяющиеся последовательности одним числом?

Двунаправленный список - C++
Чемпион мира по футболу. Страна, год последней победы, число побед. Сортировка по названию. Вычисление среднего числа титулов всех...


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

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

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