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

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

Восстановить пароль Регистрация
 
ensaid
3 / 3 / 0
Регистрация: 06.11.2012
Сообщений: 62
29.04.2013, 12:37     Создание списка и разделение его на четный и нечетный #1
Суть программы следующая:
Мы вводим число элементов (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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2013, 12:37     Создание списка и разделение его на четный и нечетный
Посмотрите здесь:

C++ Дан массив А[0:n-1].Поменять местами его минимальный чётный и максимальный нечетный элементы
Создание списка C++
C++ Формирование и просмотр списка и функция, которая изменяет каждое значение информационной части элемента списка на его квадрат
C++ Используя производные классы, определить класс параметризованного списка одного из следующих типов. Применить его для построения списка объектов указа
Написать программу, которая будет менять столбцы местами (четный и нечетный) C++
"Сортировка двусвязного списка путем исключения элемента с минимальным значением и включения его в начало нового списка C++
Массивы. Как определить, индекс четный или нечетный? C++
C++ Поменять местами элементы массива которые имеют четный и нечетный индексы

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 10:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru