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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Чернокот
0 / 0 / 0
Регистрация: 23.07.2014
Сообщений: 5
#1

Нужно продублировать первое чётное число в односвязном списке - C++

23.07.2014, 19:41. Просмотров 463. Ответов 5
Метки нет (Все метки)

Написал вот такой код, он рабочий, но никак не пойму, что нужно сделать, чтоб выполнялась поставленная задача. Прошу помочь.
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
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
//описание структуры
struct point
{
int num;//информационное поле
point*next;//адресное поле
};
point* make_point()
//создание одного элемента
{
    point*p=new(point);//выделить память
    cout<<"\nВведите число: ";
    cin>>p->num;
    p->next=0;//сформировать адресное поле 
return p;
}
void print_point(point*p)
//печать информационных полей одного элемента списка
{
    cout<<"\nЧисло: "<<p->num;
}
 
point* make_list(int n)
//формирование списка из n элементов
{
    point* beg=make_point();//сформировать первый элемент
    point*r;
    for(int i=1;i<n;i++)
    {
        r=make_point();//сформировать следующий элемент
        //добавление в начало списка
        r->next=beg;//сформировать адресное поле 
        beg=r;//изменить адрес первого элемента списка
    }
    return beg;//вернуть адрес начала списка
}
int print_list(point*beg)
//печать списка, на который указывает указатель beg
{
    point*p=beg;//р присвоить адрес первого элемента списка
int k=0;//счетчик количества напечатанных элементов 
    while(p)//пока нет конца списка
    {
        print_point(p);//печать элемента, на который указывает элемент p
        p=p->next;//переход к следующему элементу
k++;
    }
return k;//количество элементов в списке
}
void main()
{
    setlocale(LC_ALL, "rus");
    int n;
    cout<<"\nВведите размер листа: ";
        cin>>n;
    point*beg=make_list(n);//формирование списка
if(!print_list(beg)) cout<<"\nЛист пуст";
getch();
}//печать списка
Добавлено через 6 часов 0 минут
поднимем
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2014, 19:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужно продублировать первое чётное число в односвязном списке (C++):

Вывести первое чётное число, следующее за заданным числом N (файловый ввод/вывод) - C++
Напишите пожалуйста программу. Дано целое число N. Нужно вывести следующие за N четное число. С использованием файлов! Пример: input.txt:...

Ошибка в односвязном списке - C++
#include&lt;iostream&gt; #include&lt;clocale&gt; using namespace std; #define DEBUG class Monom{ protected: int...

Ошибка в односвязном списке - C++
Помогите решить эти 2 проблемы C4101: NextNode: неиспользованная локальная переменная (в 118 строке) C4703: используется потенциально...

Поиск и удаление в односвязном списке - C++
Помогите с удаление элемента по ключу(номеру этажа). При удалении 2-го элемента в списке, удаляется вместе с 1-ым, но если удалять 3, то 2...

Удаление по ключу в односвязном списке - C++
Написал алгоритм удаления по ключу в линейном, односвязном списке, но он не удаляет, а коверкает записи. Помогите разобраться.. ...

Использование деструктора в односвязном списке с++ - C++
Здравствуйте. Нужна срочная помощь!!! Есть реализация односвязного списка в котором узел - класс, а не структура. Вначале программы...

5
Хедин
74 / 69 / 36
Регистрация: 17.05.2014
Сообщений: 301
23.07.2014, 19:44 #2
Чернокот, а в каком смысле "продублировать"? Добавить сразу после найденного элемента? Дописать к концу списка?
0
Чернокот
0 / 0 / 0
Регистрация: 23.07.2014
Сообщений: 5
23.07.2014, 19:45  [ТС] #3
Без разницы. Просто продублировать.
0
Хедин
74 / 69 / 36
Регистрация: 17.05.2014
Сообщений: 301
23.07.2014, 20:19 #4
Чернокот, разница как бы есть. Если в конец дописать такой же элемент, то просто находишь первое четное число, создаешь элемент с таким же числом и дописываешь в конец списка. А вот если вставка сразу после этого найденного элемента, то будет иначе
0
Чернокот
0 / 0 / 0
Регистрация: 23.07.2014
Сообщений: 5
28.07.2014, 17:29  [ТС] #5
Сам уже сделал.
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
#include "stdafx.h"
#include <iostream>
#include <string.h>
#include <conio.h>
using namespace std;
//описание структуры
struct point
{
int num;//информационное поле
point*next;//адресное поле
};
point* make_point()
//создание одного элемента
{
    point*p=new(point);//выделить память
    cout<<"\nВведите число: ";
    cin>>p->num;
    p->next=0;//сформировать адресное поле 
return p;
}
void print_point(point*p)
//печать информационных полей одного элемента списка
{
    cout<<"\nЧисло: "<<p->num;
}
 
point* make_list(int n)
//формирование списка из n элементов
{
    point* beg=make_point();//сформировать первый элемент
    point*r;
    for(int i=1;i<n;i++)
    {
        r=make_point();//сформировать следующий элемент
        //добавление в начало списка
        r->next=beg;//сформировать адресное поле 
        beg=r;//изменить адрес первого элемента списка
    }
    return beg;//вернуть адрес начала списка
}
int print_list(point*beg)
//печать списка, на который указывает указатель beg
{
    point*p=beg;//р присвоить адрес первого элемента списка
int k=0;//счетчик количества напечатанных элементов 
    while(p)//пока нет конца списка
    {
        print_point(p);//печать элемента, на который указывает элемент p
        p=p->next;//переход к следующему элементу
k++;
    }
return k;//количество элементов в списке
}
point* add_point(point*beg)
{
    point*p=beg,*r=new(point),*k=new(point);
    while(p)
    {
        if(p->num%2==0) {r->num=p->num;k=p->next;p->next=r;r->next=k;break;}
        p=p->next;
    }
        return beg;//вернуть начало списка
 
}
 
void main()
{
    setlocale(LC_ALL, "rus");
    int n;
    cout<<"\nВведите размер листа: ";
        cin>>n;
    point*beg=make_list(n);//формирование списка
if(!print_list(beg)) cout<<"\nЛист пуст";
add_point(beg);
cout<<"\nИзменённый список: ";
print_list(beg);
getch();
}//печать списка
0
Хедин
74 / 69 / 36
Регистрация: 17.05.2014
Сообщений: 301
30.07.2014, 18:11 #6
Чернокот, ну если работает, как надо, то мои поздравления
0
30.07.2014, 18:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2014, 18:11
Привет! Вот еще темы с ответами:

Сортировка вставками в односвязном списке - C++
Собственно нужно реализовать такую сортировку, но что-то не могу я придумать как её реализовать именно в односвязном списке, у нас ведь...

Удаление узлов в односвязном списке - C++
Помогите пожалуйста, не могу понять что не так. Нужно удалить узлы содержащие простые числа.Программа не удаляет! #include&lt;iostream&gt; ...

Удаление повторяющихся элементов в односвязном списке - C++
Добрый день! Задание такое: построить линейный список из нескольких динамических переменных, содержащих вводимые целые числа....

Ошибка с удалением элемента в односвязном списке - C++
Здравствуйте! Вроде написал функцию удаления элемента в указанной позиции, но почему то не срабатывает. Где ошибка?Или если есть вариант...


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

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

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