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

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

Войти
Регистрация
Восстановить пароль
 
un1acker
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 22
#1

Функция: продублировать вхождение каждого элемента списка One и сформировать из этих значений список Double - C++

24.09.2012, 15:52. Просмотров 349. Ответов 4
Метки нет (Все метки)

Здравствуйте... При решение данной задачи <В составе программы описать функцию, которая дублирует вхождение каждого элемента списка One и формирует из этих значений список Double.> столкнулся с проблемой дублирования элементов списка (у меня дублируется только первый элемент)
Что-то не так в цикле for а вот что именно...
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
// bdz1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
/*В составе программы описать функцию, которая дублирует вхождение 
каждого элемента списка One и формирует из этих значений список Double.*/
 
using namespace std;
 
 
 
int main()
{
    struct One
    {
        int info;
        struct One *next;
    };
 
struct Double
    {
        int info2;
        struct Double *next2;
    };
    
    typedef One *OnePtr;    
    OnePtr head = NULL;
    OnePtr p;       
    int N = 10;     
    int cnt = 1;        
 
    if (head == NULL)
    {   head = new One;
    head->info = cnt++; 
    head->next = NULL;
    } 
    for (int i = 2; i<=N; i++)
    {   p = new One;
    p->info = cnt++;    
    p->next = head;
    head = p;
    }
 
    p = head;
    for (int i = 1; i<=N; i++)
    {   cout << p->info << " ";
    p = p->next;
    }
    cout <<endl;
    
    typedef Double *DoublePtr;  
    DoublePtr beg = NULL;
    DoublePtr a;    
    if (beg == NULL)
    {   beg = new Double;
    beg->info2 = head->info;    
    beg->next2 = NULL;
    head->next = NULL;
    } 
    for(int i=2;i<=20;i++)
    {a=new Double;
    a->info2=p->info;//не верно в чем ошибка?
    a->next2=beg;
    p->next=head;
    beg=a;
    head=p;}
    
    a=beg;
    for (int i = 1; i<=20; i++)
    {   cout << a->info2 << " ";
    a =a->next2;
    }
    cout <<endl;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2012, 15:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция: продублировать вхождение каждого элемента списка One и сформировать из этих значений список Double (C++):

Дублирование вхождения каждого элемента списка One и формирование из этих значений списка Double (пояснить условие) - C++
Здравствуйте. Вот собственно само задание: В составе программы описать функцию, которая дублирует вхождение каждого элемента списка One и...

Удвоить вхождение каждого элемента списка. Элементы, входящие в список больше двух раз - удалить - C++
удвоить вхождение каждого элемента списка. Элементы, какие входят в список больше двух раз изъять(удалить)

Сформировать непустой список L по принцепу стека. Удалить из списка L все вхождения элемента E - C++
Сформировать непустой список L по принцепу стека. Удалить из списка L все вхождения элемента E. Вывести список до и после изменений....

Динамические структуры данных. Сформировать динамический список, описать функцию, которая удаляет из списка за каждым вхождением элемента Е - C++
Сформировать динамический список (стек или очередь), считая, что длина списка (количество элементов) задана. Описать функцию, которая...

В списке Р заменить первое вхождение списка Р1 (если такое есть) на список Р2 - C++
Написать программу с функциями, которая: а)в списке Р заменяет первое вхождение списка Р1( если такое есть) на список Р2; б)строит...

Если максимальный элемент списка отрицательный, то продублировать каждое его вхождение в список - Pascal
Создать однонаправленный стек целых чисел, распечатать. Если максимальный элемент этого списка отрицательный, то продублировать каждое его...

4
ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 147
24.09.2012, 16:00 #2
C++
1
{a=new Double;
Не указано кол-во элементов. Нужно где-то так:
C++
1
a=new Double[кол-во элементов];
0
un1acker
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 22
24.09.2012, 16:17  [ТС] #3
ошибку выдает
0
doctor_lecter
280 / 153 / 8
Регистрация: 22.09.2012
Сообщений: 283
24.09.2012, 16:45 #4
un1acker,
a = new Double[размер] не нужно, потому что у вас связный список, размер нужен для списка в виде массива
Ошибка вероятно потому что p == NULL
0
-=ЮрА=-
Заблокирован
Автор FAQ
24.09.2012, 16:53 #5
un1acker, посмотри код ниже
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
#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
 
struct Node
{
    int value;
    Node * next;
};
 
int main()
{
 
    Node * One    = new Node;//ÓêГ*Г§Г*òåëü Г*Г* ñïèñîê 1
    Node * Double = new Node;//ÓêГ*Г§Г*òåëü Г*Г* ñïèñîê 2
    Node * pCur   = One;//ÓêГ*Г§Г*òåëü Г*Г* ГІГҐГЄГіГ№ГЁГ© ýëåìåГ*ГІ Г±ГЇГЁГ±ГЄГ*
    Node * pAdd   = NULL;//ÓêГ*Г§Г*òåëü Г*Г* äîáГ*âëÿåìûé óçåë
    //ГђГ*Г*äîìГ*îå Г§Г*ïîëГ*ГҐГ*ГЁГҐ Г±ГЇГЁГ±ГЄГ* One
    srand(time(0));
    //Гџ ñïåöèГ*ëüГ*Г® Г*ГҐ Г§Г*ïîìГ*ГЁГ*Гѕ ÷èñëî ýëåìåГ*òîâ Гў Г±ГЇГЁГ±ГЄГҐ
    //äëÿ ñïèñêîâ Г®Г*Г® Г*ГҐ Г*ГіГ¦Г*Г®
    //ГѓГҐГ*ГҐГ°Г*öèþ îñòГ*Г*îâèì êîãäГ* ïîÿâèòñÿ ÷èñëî 7
    cout<<"\tList One : \n";
    while((rand()%8 != 7))
    {
        pCur->value = rand()%128;
        pCur->next  = new Node;
        cout<<pCur->value<<endl;
        cout<<"0x"<<pCur->next<<endl;
        pCur = pCur->next;
        pCur->next = NULL;
    }
    
    //ÊîïèðîâГ*Г*ГЁГҐ Г±ГЇГЁГ±ГЄГ* One Гў Double
    cout<<"\tList Double : \n";
    pAdd = One;//ÏîñòГ*âèëè ГіГЄГ*Г§Г*òåëü Г*Г* Г*Г*Г·Г*ëî Г±ГЇГЁГ±ГЄГ* One
    pCur = Double;////ÏîñòГ*âèëè ГіГЄГ*Г§Г*òåëü Г*Г* Г*Г*Г·Г*ëî Г±ГЇГЁГ±ГЄГ* Double
    while(pAdd != NULL)
    {
        pCur->value = pAdd->value;
        pCur->next  = new Node;
        cout<<pCur->value<<endl;
        cout<<"0x"<<pCur->next<<endl;
        pCur = pCur->next;
        pAdd = pAdd->next;
    }
    cout<<"Begin of list One    : "<<One<<endl;
    cout<<"Begin of list Double : "<<Double<<endl;
    return 0;
}
Проверка http://codepad.org/m6FRCBE2
Отработка
List One :
35
0x00481920
61
Продолжение
0x00481850
91
0x00481810
102
0x004819E0
89
0x004819A0
27
0x00481960
109
0x00481660
98
0x00481620
127
0x004815E0
114
0x004815A0
10
0x00481560
List Double :
35
0x00481520
61
0x004814E0
91
0x004814A0
102
0x00481460
89
0x00481420
27
0x004813E0
109
0x004813A0
98
0x00481360
127
0x00481320
114
0x004812E0
10
0x004812A0
-842150451
0x00481260

Begin of list One : 00481B40
Begin of list Double : 00481B00
Press any key to continue
0
Миниатюры
Функция: продублировать вхождение каждого элемента списка One и сформировать из этих значений список Double  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2012, 16:53
Привет! Вот еще темы с ответами:

Сформировать статистический ряд и получить кол-во значений каждого элемента. - Matlab
Уважаемые гуру своего дела, прошу помощи: Есть таблица: матрица А: 2 4 2 6 3 6 5 2 ...

Список: В поле данных каждого элемента списка записываются данные о товаре - Free Pascal
В поле данных каждого элемента списка записываются данные о товаре: название, страна изготовитель, стоимость. Выведите на экран весь список...

Список: функция вычленения (n-m)-го элемента из заданного списка - Haskell
помогите с реализацией такой вот задачки пожалуйста:( Функция вычленения n-m -го элемента из заданного списка.

Дан список, элементы которого - натуральные числа. Вычесть из каждого элемента списка 1 - Lisp
Дан список, элементы которого - натуральные числа. Вычесть из каждого элемента списка 1.


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
24.09.2012, 16:53
Ответ Создать тему
Опции темы

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