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

Стек и работа с ним - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как удалить файл или изменить его тип http://www.cyberforum.ru/cpp-beginners/thread539277.html
Всем привет! Подскажите мне пожалуйста как удалить в с++; То есть допустим пользователь указал путь и расширение файла а программа удаляет этот файл или изменяет расширение на любое другое ну...
C++ Помогите найти ошибку: копирование массивов Привет отзывчивым, у меня проблема, не пойму почему не копируется массив... смотрите в 49 строчку #include <iostream> using namespace std; void main() { int n,m,x=0,y=0,i,j;... http://www.cyberforum.ru/cpp-beginners/thread539274.html
Олимпиада по программированию C++
28 апреля государственный тур олимпиада по программированию (в Армении), и я готовлюсь к олимпиаде. Прошу вас, если несложно дайте задач порешать. И если можно дать ссылки на описания алгоритмов (ну...
..Создать 3 простые программки: 1)do,while 2)while 3)for C++
можно однотипные,а можно и с разными условиями... очень-очень надо... только действительно самые простые... типа пока 5< вводимого числа писать да..
C++ Заданы массивы вещественных чисел X и Y. Сформировать массив Z из положительных элементов массивов X и Y. http://www.cyberforum.ru/cpp-beginners/thread539248.html
Заданы массивы вещественных чисел X и Y. Сформировать массив Z из положительных элементов массивов X и Y. Определить номера максимального и минимального элементов в массиве Z. Почему она...
C++ Алгоритмы сортировки (сортировка и вычисляемыми адресами, вычерпыванием, по индексам и с указателями). Алгоритмы сортировки (сортировка и вычисляемыми адресами, вычерпыванием, по индексам и с указателями). Нужно как бы три программы(каждую сортировку) в одной программе. подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9625 / 5573 / 947
Регистрация: 25.07.2009
Сообщений: 10,708
06.04.2012, 01:22
Цитата Сообщение от kristi1 Посмотреть сообщение
а остальные функции
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
#include <iostream>
#include <stdexcept>
 
class TwoWayIntList {
    struct Node {
        int value;
        Node * prev;
        Node * next;
        Node(int val, Node * p = 0, Node * n = 0) : value(val), prev(p), next(n) {}
    };
    
    Node * first;
    Node * last;
    size_t count;
    
    TwoWayIntList(const TwoWayIntList &);
    TwoWayIntList & operator = (const TwoWayIntList &);
    
public:
    TwoWayIntList() : first(0), last(0), count(0) {}
    
    virtual ~TwoWayIntList() {
        while ( first ){
            last = first->next;
            delete first;
            first = last;
        }
    }
    
    void add(int value) {
        Node * node = new Node(value);
        if ( ! first )
            first = node;
        else {
            node->prev = last;
            last->next = node;
        }
        last = node;
        count += 1;
    }
    
    void insertAfter(size_t pos, int value) {
        if ( pos > count  )
            throw ( std::runtime_error("Out of bounds") );
        
        Node * node = new Node(value);
        if ( pos == 0 ) {
            node->next = first;
            first->prev = node;
            first = node;
        }
        else if ( pos == count ) {
            node->prev = last;
            last->next = node;
            last = node;
        }
        else {
            Node * ptr = first;
            while ( --pos )
                ptr = ptr->next;
            node->prev = ptr;
            node->next = ptr->next;
            ptr->next->prev = node;
            ptr->next = node;
        }
        count += 1;
    }
    
    size_t getCount() const { return count; }
    
    void dump(std::ostream & ost, const char sep = ' ') {
        for ( Node * n = first; n; n = n->next )
            ost << n->value << sep;
    }
    
    void reverseDump(std::ostream & ost, const char sep = ' ') {
        for ( Node * n = last; n; n = n->prev )
            ost << n->value << sep;
    }
};
 
int main() {
    TwoWayIntList list;
    
    list.add(1);
    list.add(2);
    list.add(3);
    list.add(4);
    list.add(5);
    
    std::cout << "Forward:" << std::endl;
    list.dump(std::cout);
    std::cout << "\nBackward:" << std::endl;
    list.reverseDump(std::cout);
    std::cout << std::endl;
    
    list.insertAfter((list.getCount() + (list.getCount() & 1)) / 2, 13);
    
    std::cout << "Forward:" << std::endl;
    list.dump(std::cout);
    std::cout << "\nBackward:" << std::endl;
    list.reverseDump(std::cout);
    std::cout << std::endl;
    
    list.insertAfter((list.getCount() + (list.getCount() & 1)) / 2, 69);
    
    std::cout << "Forward:" << std::endl;
    list.dump(std::cout);
    std::cout << "\nBackward:" << std::endl;
    list.reverseDump(std::cout);
    std::cout << std::endl;
    
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru