Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
3 / 3 / 0
Регистрация: 06.11.2012
Сообщений: 62
1

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

29.04.2013, 12:37. Просмотров 820. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2013, 12:37
Ответы с готовыми решениями:

Дан массив E[0:n-1].Поменять местами его первый чётный и последний нечётный элементы
Помогите пожалуйста.Нужен полный текст программы, заранее благодарен

Дан массив А[0:n-1].Поменять местами его минимальный чётный и максимальный нечетный элементы
помогите пожалуйста

Дан массив E[1:n].Поменять местами его первый чётный и последний нечётный элементы
Дан массив E.Поменять местами его первый чётный и последний нечётный элементы

Односвязный список: удалить элемент списка, если он чётный и следующий элемент отрицательный и нечётный
Здравствуйте. Задание на односвязные списки: удалить элемент списка, если он чётный и следующий...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2013, 12:37

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Каждый нечетный элемент списка умножить на 2, каждый четный на 3
сначало пытаюсь написать хотя бы проверку на четность и умножение на 3. (defun четность (l) ...

каждый нечетный элемент списка умножить на 2, каждый четный на 3. использовать только рекурсию CAR,CDR,COND,CONS
каждый нечетный элемент списка умножить на 2, каждый четный на 3. использовать только рекурсию ...

Заполнить массив: каждый четный элемент равен нулю, каждый нечетный - значению его индекса
заполнить массив А следующим образом:каждый четный элемент массива равен нулю каждый не четный...

Четный и нечетный делитель
Для двух данных натуральных чисел найдите их наибольший четный и наибольший нечетный делители. ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.