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

Создание списка и разделение его на четный и нечетный - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ обединение 2х масовов http://www.cyberforum.ru/cpp-beginners/thread851809.html
Даны два упорядоченных по возрастанию массива действительных чисел одинакового размера: и . Требуется за один просмотр объединить эти массивы в один массив размера 2n также упорядоченный по...
C++ Определить, является ли введённая с клавиатуры строка двоичным числом Задание: Напишите программу, которая определяет, является ли введённая с клавиатуры строка двоичным числом. Люди помогите пожалуйсто очень срочно надо здать лабу, а это задание не могу... http://www.cyberforum.ru/cpp-beginners/thread851785.html
Размещение с повторениями C++
Помогите, пожалуйста. Буду очень благодарна. Задано натуральные числа n и k. Навести в лексикографическом порядке все размещения с повторениями элементов множества {1, 2, …, n} по k. Определить их...
Написать программу для игры в морской бой C++
Помогите с заданием на курсовую, проболел, времени совсем не хватает... 1-курс..
C++ Объявить массив целых чисел и заполнить его случайными значениями http://www.cyberforum.ru/cpp-beginners/thread851748.html
Добавлено через 26 секунд Объявить массив целых чисел и заполнить его случайными значениями. Размер массива и диапазон значений его элементов заданы в Вашем варианте индивидуального задания...
C++ инициализация конструктора класса инициализация конструктора класса Rectangle::Rectangle(int w, int h): itsWidth(w), itsHeight(h) {} Изучаю с++. объясните доступно что это значит. прежде в самом классе мы объявили... подробнее

Показать сообщение отдельно
ensaid
3 / 3 / 0
Регистрация: 06.11.2012
Сообщений: 62

Создание списка и разделение его на четный и нечетный - C++

29.04.2013, 12:37. Просмотров 357. Ответов 0
Метки (Все метки)

Суть программы следующая:
Мы вводим число элементов (n) и вводим (n-ное ) количество элементов, эти элементы должны разделиться на четные и нечетные, в два списка, но почему-то они у меня записываются подряд, просто тупо подряд, может кто помочь с ошибкой?
Кликните здесь для просмотра всего текста
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
#include "stdafx.h"
#include <iostream>
using namespace std;
struct List
{
    int info;
    List *next;
};
 
struct stack {
    List *head;
};
 
 
void AddList(List*& head, int key, int pos) 
{
List* current,*help;
// добавление в начало списка 
if (pos==1)
{
help=new List;
help->info=key;
help->next=head;
head=help;
return;
}
// поиск элемента, после которого требуется 
// вставить новый элемент
current=head;
int i=1;
while(i!=pos-1 && current!=NULL)
{
i++;
current=current->next;}
 
// позиция не найдена, список оказался коротким
if (current==NULL)
{
cout<<"Некорректная позиция\n"; return;
}
 
// вставка элемента в позицию pos
help=new List; 
help->info=key;
help->next=current->next;
current->next=help; 
}
 
// определение функции разбиения списка на два -
//в одном четные элементы, в другом - нечетные 
 
void Decompose(List* head, List*& head1, List*& head2) 
{
List* current1=NULL,*current2=NULL; head1=NULL; head2=NULL;
// просмотр элементов исходного списка
while(head!=NULL)
{
// если значение текущего элемента четное 
    if (head->info%2==0)
{
// добавляем элемент в список 
    // с четными значениями элементов
    if (head2==NULL) 
// формируем заголовок списка
    head2=current2=head;
else
{
// список не пуст,
// добавляем в конец новый элемент 
    current2->next=head; current2=current2->next;
}
    }
    else
{
// добавляем элемент в список
// с нечетными значениями элементов
 
if (head1==NULL)
// список еще пуст
// формируем заголовок списка
head1=current1=head;
else
{
// список не пуст,
// добавляем в конец новый элемент 
    current1->next=head; 
current1=current1->next;
}
    }
 
// переходим на следующий элемент
 // в исходном списке 
head=head->next;
    
}
 
// установка признаков конца построенных списков
 
 if (current1!=NULL)
current1->next=NULL;
 if (current2!=NULL)
current2->next=NULL;
}
 
 
void Print (List* head)
{List *c=head;
    
    while(c!=NULL)
{cout<<c->info<<' ';
c=c->next;
}
cout<<endl;
 
}
 
int _tmain(int argc, _TCHAR* argv[])
 
{
List *head=NULL;
int i,k,n;
cout<<"vvedite n=";
cin>> n;
for (i=1;i<=n;i++)
{cout<<"\n vvedite k=";
cin>> k;
AddList(head,k,i);
}
Print(head);
system("PAUSE");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru