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

Найти объединение двух списков - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Строки http://www.cyberforum.ru/cpp-beginners/thread92848.html
Может кто-нибудь объяснить каждую строчку в этой программе ? #include "stdafx.h" #include "iostream.h" #include "string.h" #include "math.h" void main() {char a; int i,d; cout<<"Input digital string: ";
C++ Генерация случайных чисел Помогите пожалуйста с этой программой, я ни как не могу понять как ее зделать. Написать программу, которая генерирует три последовательности из десяти случайных чисел в диапазоне от 1 до 10, выводит каждую последовательность на экран и вычисляет среднее арифметическое каждой последовательности. Среда разработки: С++ http://www.cyberforum.ru/cpp-beginners/thread92846.html
Случайные числа в заданном диапазоне C++
Подскажите как написать программу, которая генерирует последовательность из N случайных чисел в диапазоне от 1 до 10, выводит эти числа на экран и вычисляет их среднее арифметическое.
Неожиданное окончание файла C++
Требуется организовать побитовое чтение файла (формат .dat) и компоновка (перестановка 2-х бит) в массив. Написал код. Возникла проблема: происходит неожиданный конец файла (eof) при 85 кадре (1 кадр = чтение 2-х бит). При чтении того же самого файла и вместо fin >> x1 использовать fin.get(x1) конец происходит на 83 кадре. Причём эти прочтённые кадры соответсвуют действительности( проверенно при...
C++ Конвертер (калькулятор) http://www.cyberforum.ru/cpp-beginners/thread92838.html
Задача состоит в том, что на форме есть четыри Эдита и баттон,надо разработать программу которая бы конвертировала числа из десятичной системы счисления в двоичную, восьмеричную и шестнадцатиричную. В первом эдите вводиться десятичное число, жмется баттон и в остальных эдитах высвечиваються конвертированные в соответственные системы счисления результаты.
C++ С++ Одномерные массивы Парни помогите решить задачу в С++ Вот условие: Задана последовательность N вещественных чисел. Вычислить Si=корень квадратный(Xi-M)^2/N-1 где М — среднее арифметическое данной последовательности. подробнее

Показать сообщение отдельно
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
08.02.2010, 22:40     Найти объединение двух списков
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include <stdio.h>
#include <stdlib.h>
 
//Возвращаемы значения
//----------------------------------------------------------
//Для функции: long Create(Node **pbeg, Node **pend, DATA d)
#define OK_CREATE 0x000       //список создан
#define LIST_IS   0x100       //список уже существует, его повторное создание невозможно
 
//Для функции: long add(Node  **pend, DATA d)
#define OK_ADD       0x300          //добавили в конец списка
#define LIST_IS_NOT  0x003          //список пуст создайте его заново
//---------------------------------------------------------------------------
 
typedef int DATA;
//описываем узел
struct Node {
DATA dan;
Node *prev;
Node *next;
};
 
//Основыне функции по работе со списком----------------------------------------------------------------------------------------
long Create (Node **pbeg, Node **pend, DATA d);              //создание списка
long add    (Node  **pbeg, Node **pend ,DATA d);             //добавление в конец
DATA DelB   (Node **pbeg);                                   //выборка из начала
void Print(Node *pbeg);                                      //показ списка сначала
 
//-----------------------------------------------------------------------------------------------------------------------------
 
void main(){
//Создаём первый список
Node *pbeg1 = NULL;
Node *pend1 = NULL;
Create(&pbeg1,&pend1,1);
int mas1[5]={2,3,4,5,6};
int i;
for(i=0;i<5;i++)add(&pbeg1,&pend1,mas1[i]);
Print(pbeg1);
//---------------------------------------------
//Создаём второй список
Node *pbeg2 = NULL;
Node *pend2 = NULL;
Create(&pbeg2,&pend2,7);
int mas2[5]={8,9,10,11,12};
for(i=0;i<5;i++)add(&pbeg2,&pend2,mas2[i]);
Print(pbeg2);
//---------------------------------------------
 
Node *tpbeg1 = pbeg1;   //что бы указатель на начало не изменялся
Node *tpbeg2 = pbeg2;   //что бы указатель на начало не изменялся
//Формируем объединённый список----------------------------------
Node *pbeg3 = NULL;
Node *pend3 = NULL;
 
Create(&pbeg3,&pend3,tpbeg1->dan);
tpbeg1=tpbeg1->next;   //продвигаем на второй
 
//Формируем новый иp первого
while(tpbeg1)
{
    add(&pbeg3,&pend3,tpbeg1->dan);
    tpbeg1=tpbeg1->next; 
}
 
//Формируем новый из второго
while(tpbeg2)
{
    add(&pbeg3,&pend3,tpbeg2->dan);
    tpbeg2=tpbeg2->next; 
}
 
Print(pbeg3);  //показываем сформированный список
 
//Отчищаем память из-под списков
DelB(&pbeg1);
DelB(&pbeg2);
DelB(&pbeg3);
 
return;
}
 
//-----------------------------------------------------------------------------------------------------------------------------
 
 
 
//создание списка-----------------------------
long Create (Node **pbeg, Node **pend, DATA d){
//Безопасное создание списка, если список пуст создаём его
if((*pbeg)==NULL||(*pend)==NULL) {
 
Node *pv = new Node;  //создаём узел
pv->dan = d;          //присваиваем основным данным узла, значения
pv->next = NULL;      //следующего  узла нет
pv->prev = NULL;      //предыдущего узла нет
(*pbeg)=pv;           //это узел начальный
(*pend)=(*pbeg);      //начало-конец списка
return OK_CREATE;     //создали список
}
//иначе
else return LIST_IS;  //список существет создавать его не надо
 
 
}
 
//добавление в конец очереди
long add(Node  **pbeg, Node **pend, DATA d){
if((*pbeg)==NULL||(*pend)==NULL)return LIST_IS_NOT;
Node *pv = new Node;  //создаём узел
pv->dan = d;          //присваиваем основным данным узла, значения
pv->next = NULL;      //следующего  узла ещё нет
pv->prev =(*pend);    //связываемя с последним
(*pend)->next = pv;   //последний связывается с новым
(*pend)=pv;           //новый становится последним.
return  OK_ADD ;
 
 
}
 
//выборка из начала----------------------
DATA DelB(Node **pbeg){
Node *tmp = *pbeg;   
DATA var(0);
//Если в списке что- что есть
if(tmp){
var=tmp->dan;
(*pbeg)=(*pbeg)->next;
delete tmp;
return var;
}
return var;
}
 
 
//показать список на экран--------------------
void Print(Node *pbeg){
    
    while(pbeg){
        printf("%d",pbeg->dan);
        printf("\n");
        pbeg=pbeg->next;
    }
printf("\n");
 
 
 
return ;
}
 
Текущее время: 18:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru