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

динамические структуры не получается продублировать элемент - C++

Восстановить пароль Регистрация
 
un1acker
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 22
24.09.2012, 15:52     динамические структуры не получается продублировать элемент #1
Здравствуйте... При решение данной задачи <В составе программы описать функцию, которая дублирует вхождение каждого элемента списка 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2012, 15:52     динамические структуры не получается продублировать элемент
Посмотрите здесь:

Динамические структуры: линейные списки C++
Динамические структуры C++
C++ Динамические структуры
Динамические структуры C++
C++ Работа с массивом. Ввести число x и продублировать каждый элемент массива, превосходящий x
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ReasonX7
 Аватар для ReasonX7
47 / 46 / 2
Регистрация: 11.12.2011
Сообщений: 146
24.09.2012, 16:00     динамические структуры не получается продублировать элемент #2
C++
1
{a=new Double;
Не указано кол-во элементов. Нужно где-то так:
C++
1
a=new Double[кол-во элементов];
un1acker
0 / 0 / 0
Регистрация: 07.03.2012
Сообщений: 22
24.09.2012, 16:17  [ТС]     динамические структуры не получается продублировать элемент #3
ошибку выдает
doctor_lecter
 Аватар для doctor_lecter
279 / 152 / 8
Регистрация: 22.09.2012
Сообщений: 283
24.09.2012, 16:45     динамические структуры не получается продублировать элемент #4
un1acker,
a = new Double[размер] не нужно, потому что у вас связный список, размер нужен для списка в виде массива
Ошибка вероятно потому что p == NULL
-=ЮрА=-
Заблокирован
Автор 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
Миниатюры
динамические структуры не получается продублировать элемент  
Yandex
Объявления
24.09.2012, 16:53     динамические структуры не получается продублировать элемент
Ответ Создать тему
Опции темы

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