Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
2 / 5 / 1
Регистрация: 13.09.2015
Сообщений: 100
1

Как в алгоритме обозначить двусвязный список?

18.11.2015, 03:10. Показов 698. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал программу для двусвязного списка. Проблема в том, как составить алгоритм?
В программе присутсвует ввод элементов списка, вывод, вывод суммы
Кому интересно, само задание: С клавиатуры вводится последовательность вещественных чисел x1, x2, x3... xn n>2. Вывести последовательность x1+xn; x2+xn-1; x3+xn-2, ..., xn+x1.
Указание. Использовать двусвязный список.

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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
struct element
{
char nx[30];
float x;
element *prev;
element *next;
};
 
void output (element **begin)
{
    element *p = *begin;
    while (p)
    {
        cout << p->x << " <=> ";
        p=p->next;
    }
 
    cout << "NULL" << endl;
}
 
void result (element **begin, element **end,const int&n)
{
    element *tmp, *tmp1;
    tmp = *begin;
    tmp1 = *end;
    int k=0;
    while (tmp!=tmp1 && k!=n/2)
    {
        cout << tmp->x << "+" << tmp1->x << "; ";
        tmp=tmp->next;
        tmp1=tmp1->prev;
        k++;
 
    }
 
    if (tmp==tmp1) cout << tmp->x << ";";
 
 
}
 
void sum (element **begin, element **end, const int&n)
{
    element *cmp, *cmp1;
    cmp = *begin;
    cmp1 = *end;
    int k=0;
    while (cmp!=cmp1 && k!=n/2)
    {
        cout << cmp->x + cmp1->x << "; ";
        cmp=cmp->next;
        cmp1=cmp1->prev;
        k++;
    }
 
    if (cmp==cmp1) cout << cmp->x << ";";
 
 
}
 
int main ()
{
    setlocale (LC_ALL, "Russian");
    cout << "Введите n: ";
    int n;
    cin >> n;
 
 
    
    element *begin = NULL;
    begin = new element;
    begin->prev = NULL;
    begin->next = NULL;
    element *k;
    k = begin;
    element *end;
    end = begin;
    end->next = new element;
    end = end->next; 
    end->prev = k;
    end->next = NULL;
    
    cin.get();
    cout << "Введите x1: ";
    cin.getline (k->nx,30);
    k->x = atof (k->nx);
    
    cout << "Введите x2: ";
    cin.getline (end->nx,30);
    end->x = atof (end->nx);
    
    
    
    for (int i=0; i<n-2; i++)
    {
        end->next = new element;
        end=end->next;
        end->prev = k->next;
        k = k->next;
        end->next = NULL;
        cout << "Введите x" << i+3 << ": ";
        cin.getline (end->nx,30);
        end->x = atof (end->nx);    
    }
 
    output (&begin);
    result (&begin, &end,n);
    cout << endl;
    sum (&begin, &end,n);
 
    _getch ();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.11.2015, 03:10
Ответы с готовыми решениями:

Переделать двусвязный список в двусвязный кольцевой
Здравствуйте, у меня єсть двусвязный список однако он не кольцевой! как это запрограммировать? и...

Как отсортировать двусвязный список?
Здравствуйте, имеется двусвязный список, в узлах - информация о поездах и нужно его отсортировать...

Как создать двусвязный список?
Собственно... не шарю, как сделать двусвязный! односвязный вроде как получается. Двусвязный как-то...

двусвязный список как сделать объединение?
Подскажите пожалуйста! Задание на курсовой было такое &quot;Разработать абстрактный тип данных...

2
2276 / 1767 / 741
Регистрация: 27.07.2012
Сообщений: 5,250
18.11.2015, 10:21 2
Цитата Сообщение от ChadloveMary Посмотреть сообщение
Проблема в том, как составить алгоритм?
Какой алгоритм?
0
2 / 5 / 1
Регистрация: 13.09.2015
Сообщений: 100
18.11.2015, 18:08  [ТС] 3
John Prick, извините, оговорился, имел ввиду блок-схему
0
18.11.2015, 18:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2015, 18:08
Помогаю со студенческими работами здесь

Как создать двусвязный линейный список?
Люди добрые, помогите с лабораторной работой! Нужно выполнить следующее: 3) Двусвязный линейный...

Как переделать двусвязный список в циклический c++
Как переделать двусвязный список в циклический c++

Возможно ли как-то переделать односвязный список в двусвязный?
Собственно вопрос в названии. Возможно ли переделать односвязный список в двусвязный? Или проще...

Двусвязный список. Как обратиться к первому элементу списка
Добрый день. Есть программа, для которой нужно сделать функцию FindMin, которая бы находила...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru