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

Списки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывод map через ostream_iterator с использованием алгоритма reverse_copy!!! http://www.cyberforum.ru/cpp-beginners/thread380895.html
У меня есть два класса Time и Patient, я засунул их в map (ключ Time, значение - Patient), и мне надо вывести через ostream_iterator в убывающем порядке (reverse_copy), скажите пожалуйста как это сделать!!! Вот мой код. #include <iostream> #include <string> #include <map> #include <algorithm> #include <fstream> #include <iterator> using namespace std; class Time
C++ Область применения С/С++ Я программирую на C++ и С# под Windows. Хотелось бы узнать по конкретнее для каких сфер применяется С++ в настоящее время? На С# пишутся в основном офисные приложения(хотя можно написать и многое другое), С++ по моему для этого использовать ни к чему. Не буду хвалить тот или иной язык тема не об этом. Но мне С++ нравится более низким уровнем абстракции, однако область применения не очень ясна?... http://www.cyberforum.ru/cpp-beginners/thread380887.html
Одномерный массив. Найти наименьшие среди элементов первого массива, которые не входят во второй массив. C++
Задано два массива. Найти наименьшие среди элементов первого массива, которые не входят во второй массив. Ни как не могу придумать:cry:, помогите пожалуйста. вот что смог, программа немного не даработана #include <iostream.h> #include <iomanip.h> #include <conio.h> main() { int arraySize;
C++ Найти в введеном числе цифру "1"
Если хотя бы один раз встречается "1" вывести "Yes" и закончить программу. Подскажите что не так тут. #include<iostream> using namespace std; int main(){ int a,r; cin>>a; // К примеру вводим 1536 while (a==0) {
C++ Помогите написать программу, плиз... http://www.cyberforum.ru/cpp-beginners/thread380880.html
Цель работы:Дана функция, заданная бесконечным рядом. С клавиатуры вводятся x и e(e - точность 0,001 - 0,00001), нужно вычислить бесконечную сумму с заданной точностью е. Вычисления прекращаются, когда очередное слагаемое по модулю меньше точности. Требуется, во-первых, вывести на экран таблицу значений i и суммы i слагаемых. Во-вторых, посторить график этой функции. По оси абцисс выводить i, по...
C++ Открыть файл Как открыть существующий файл? Делать мне с ним ничего не надо, т.е. хендл не нужен, нужно просто, чтоб он открылся подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
10.11.2011, 20:59     Списки
Цитата Сообщение от KOPC1886 Посмотреть сообщение
Вот у меня есть список и функции, как мне теперь создать второй список и поместить его содержимое в список№1?
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
struct Node
{
        char a;
        Node *next;
        Node *prev;
 
};
 
 
Node * first(char a);
void add(Node **pend, char a);
Node * find(Node * const pbeg, int i);
bool remove(Node **pbeg, Node **pend, int key);
Node * incert(Node * const pbeg, Node **pend, int key, char a);
 
///////////////////////////////////////////////////////////////////
 
// Формирование первого элемента
Node * first(char a)
{
        Node *pv = new Node;
        pv->a = a;
        pv->next = 0;
        pv->prev = 0;
        
        return pv;
}
//
// Добавление в конец списка
 
void add(Node **pend,char a)
{
        Node *pv = new Node;
        pv->a = a; 
        pv->next = 0; 
        pv->prev = *pend;
        (*pend)->next = pv;
        *pend = pv;
 
}
 
///////////////////////////////
Node * find(Node * const pbeg,int i)
{
        Node *pv = pbeg;
        while (pv)
        {
                if (pv->a==i)break;
                {
                        
                        pv=pv->next;
                }
        }
                return pv;
 
 
}
 
// Удаление элемента
 
bool remove(Node **pbeg, Node **pend, int key){
if(Node *pkey = find(*pbeg, key)){
        if (pkey == *pbeg)
        { // 2
                *pbeg = (*pbeg)->next;
                (*pbeg)->prev =0;
        }
        else if (pkey == *pend){ // 3
                *pend = (*pend)->prev;
                (*pend)->next =0;}
else
{        // 4
        (pkey->prev)->next = pkey->next;
        (pkey->next)->prev = pkey->prev;
}
 
delete pkey;
return true; // 5
}
return false; 
}// 6
 
//
// Вставка элемента
 
Node * incert (Node * const pbeg, Node **pend, int key, char a){
if(Node *pkey = find(pbeg, key)){
Node *pv = new Node;
pv->a = a;
// 1 - установление связи нового узла с последующим:
pv->next = pkey->next;
// 2 - установление связи нового узла с предыдущим:
pv->prev = pkey;
// 3 - установление связи предыдущего узла с новым:
pkey->next = pv;
// 4 - установление связи последующего узла с новым:
if( pkey != *pend) (pv->next)->prev = pv;
// Обновление указателя на конец списка,
// если узел вставляется в конец:
else *pend = pv;
return pv;
}
 
return 0;
}
Вам просто нужно задать два указателя на вашу структуру Node и положить их равным 0. А затем использовать функции по добавлению первого или последующих элементов списка.

Лучше сразу же использовать функцию first,например,

C++
1
2
Node *n1 = first( 'a' );
Node *n2 = frist( 'b' );
 
Текущее время: 20:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru