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

Объединение двух отсортированных списков - C++

Восстановить пароль Регистрация
 
Wenderer
0 / 0 / 0
Регистрация: 11.05.2010
Сообщений: 5
13.05.2010, 20:35     Объединение двух отсортированных списков #1
Ошибка где-то во вставке элементов 2-ого списка в первый, не могу найти


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
#include <iostream>
#include <cmath>
using namespace std;
struct node {
    int elem;
    node *sled;
    node *pred;
};
int main ()
{
    node *nsp1;
    node *sp1;
    node *ksp1;
    int el;
    nsp1=new(node);
    sp1=nsp1;
    (*nsp1).sled=NULL;
    (*nsp1).pred=NULL;
    cout <<"Vvedite element: ";
    cin >>el;
    while (el!=0)
    {
        (*sp1).elem=el;
        (*sp1).sled=new(node);
        (*((*sp1).sled)).pred=sp1;
        sp1=(*sp1).sled;
        ksp1=sp1;
        (*ksp1).sled=NULL;
        cout <<"Vvedite element: ";
        cin >>el;
    }
    cout <<"spisok1: ";
    for (sp1=nsp1;sp1!=ksp1;sp1=(*sp1).sled)
        cout <<(*sp1).elem<<'\t';
    node *k1;
    node *q1;
    node *b1;
    b1=new(node);
    for(k1=(*ksp1).pred;k1>=(*nsp1).sled;k1=(*k1).pred)
        for(sp1=nsp1;sp1<=(*k1).pred;sp1=(*sp1).sled)
        {
            q1=(*sp1).sled;
                if((*sp1).elem>(*q1).elem)
                {
                    (*b1).elem=(*sp1).elem;
                    (*sp1).elem=(*q1).elem;
                    (*q1).elem=(*b1).elem;
                }
        }
    cout <<'\n'<<"otsortirovanniy spisok1: ";
    for (sp1=nsp1;sp1!=ksp1;sp1=(*sp1).sled)
        cout <<(*sp1).elem<<'\t';
    node *nsp2;
    node *sp2;
    node *ksp2;
    nsp2=new(node);
    sp2=nsp2;
    (*nsp2).sled=NULL;
    (*nsp2).pred=NULL;
    cout <<'\n'<<"Vvedite element: ";
    cin >>el;
    while (el!=0)
    {
        (*sp2).elem=el;
        (*sp2).sled=new(node);
        (*((*sp2).sled)).pred=sp2;
        sp2=(*sp2).sled;
        ksp2=sp2;
        (*ksp2).sled=NULL;
        cout <<"Vvedite element: ";
        cin >>el;
    }
    cout <<"spisok2: ";
    for (sp2=nsp2;sp2!=ksp2;sp2=(*sp2).sled)
        cout <<(*sp2).elem<<'\t';
    node *k2;
    node *q2;
    node *b2;
    b2=new(node);
    for(k2=(*ksp2).pred;k2>=(*nsp2).sled;k2=(*k2).pred)
        for(sp2=nsp2;sp2<=(*k2).pred;sp2=(*sp2).sled)
        {
            q2=(*sp2).sled;
            if((*sp2).elem>(*q2).elem)
                {
                    (*b2).elem=(*sp2).elem;
                    (*sp2).elem=(*q2).elem;
                    (*q2).elem=(*b2).elem;
                }
        }
        cout <<'\n'<<"otsortirovanniy spisok2: ";
        for (sp2=nsp2;sp2!=ksp2;sp2=(*sp2).sled)
            cout <<(*sp2).elem<<'\t';
 
    
    for (sp2=nsp2;sp2!=ksp2;sp2=(*sp2).sled)
        for (sp1=nsp1;sp1!=ksp1;sp1=(*sp1).sled)
            {
                q1=(*sp1).sled;
                if (((*sp2).elem>(*sp1).elem)&&((*sp2).elem<(*q1).elem))
                {
                    (*sp1).sled=sp2;
                    (*sp2).pred=sp1;
                    (*sp2).sled=q1;
                    (*q1).pred=sp2;
                }
            }
    cout <<'\n'<<"spisok: ";
    for (sp1=nsp1;sp1!=ksp1;sp1=(*sp1).sled)
        cout <<(*sp1).elem<<'\t';
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.05.2010, 20:35     Объединение двух отсортированных списков
Посмотрите здесь:

АТД список. Объединение списков. C++
Объединение (конкатенация) двух односвязных списков C++
C++ Слияние двух отсортированных списков
Объединение двух списков в один без повтора элементов (С++) C++
Объявить объединение из двух структур и структуру из двух объединений C++
Объединение списков (list) C++
C++ Объединение двух списков
Из двух отсортированных по возрастанию массивов сформировать третий, отсортированный также по возрастанию C++

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

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

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