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

Односвязный список. Вывести сумму последнего элемента и первого, предпоследнего и последнего и т.д. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Индексация массива класса, через объект этого класса http://www.cyberforum.ru/cpp-beginners/thread723278.html
class A{ char c;//? - размер массива public: A(int C){c;} }; int main(){ A a(5);//вносим размер массива getch(); return 0;
C++ Перегрузка операторов Нужно для класса комплексных чисел перегрузить операторы. Односимвольные определить как дружественные, а двусимвольные, присваивание и ВВ-операторы - как методы класса. К примеру, объявление оператора декремента, как метода класса: Complex operator+=(Complex &); Вопрос в том, какой тип указывать для этих функций, когда объявляю их как дружественные? friend operator+(Complex &); http://www.cyberforum.ru/cpp-beginners/thread723274.html
Вызов функции по ссылке C++
Написать функцию SumDigit(N1,N2), находящую сумму и количество чисел от N1 до N2, сумму и количество четных чисел от N1 до N2 (N1,N2 - входные параметры целого типа).
C++ Ввести символьную строку. Распечатать каждый символ массива с новой строки
Ввести символьную строку. Распечатать каждый символ массива с новой строки.
C++ Найти среднее значение отрицательных элементов ниже главной диагонали http://www.cyberforum.ru/cpp-beginners/thread723252.html
Дана матрица вещественных чисел A. Найти среднее значение отрицательных элементов ниже главной диагонали.
C++ Проиницилизировать элементы массива, массив должен быть отсортирован в порядке возростания Даны два одномерных массива, X и Y вещественных чисел. Проиницилизировать элементы массива, причем массив X должен быть отсортирован в порядке возростания. Вывести только те числа, которые находятся в обоих массивах (испльзуя алгоритм бинарного поиска) подробнее

Показать сообщение отдельно
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
08.12.2012, 01:10     Односвязный список. Вывести сумму последнего элемента и первого, предпоследнего и последнего и т.д.
maSt, для односвязного списка единственный способ найти его i-ый элемент - это перебор. Вам нужна функция, которая бы сдвигала указатель на текущий элемент списка на нужное число позиций, таким образом работать со списком можно будет, как с простым массивом.

Добавлено через 3 часа 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
#include <iostream>
 
struct SinglyLinkedListNode {
 
    int data;
    SinglyLinkedListNode* next;
 
    SinglyLinkedListNode(int data, SinglyLinkedListNode* next)
        : data(data), next(next) {
        
    }
};
 
struct SinglyLinkedList {
 
    int size;
    SinglyLinkedListNode* head;
    SinglyLinkedListNode* tail;
 
    SinglyLinkedList()
        : size(0), head(NULL), tail(NULL) {
 
    }
};
 
void PushBack(SinglyLinkedList& list, int data) {
 
    if(list.tail == NULL) {
 
        list.head = new SinglyLinkedListNode(data, NULL);
        list.tail = list.head;
    }
 
    else {
 
        list.tail->next = new SinglyLinkedListNode(data, NULL);
        list.tail = list.tail->next;
    }
 
    ++list.size;
}
 
void Advance(SinglyLinkedListNode*& node, int n) {
 
    for(int i = 0; i < n; ++i)
        node = node->next;
}
 
// ...
 
int main() {    
    
    SinglyLinkedList list;
 
    //--------------
    int value;
    
    while((std::cin >> value) && value != 0)
        PushBack(list, value);                
 
    //--------------
    for(int i = 0, j = list.size - 1; i < j; ++i, --j) {
        
        SinglyLinkedListNode* node1 = list.head;
        SinglyLinkedListNode* node2 = list.head;
 
        Advance(node1, i);
        Advance(node2, j);
        
        std::cout << (node1->data + node2->data) << " ";
    }
 
    std::cout << std::endl;
 
    // ...
}
 
Текущее время: 12:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru