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

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

Войти
Регистрация
Восстановить пароль
 
СергейАС
1 / 1 / 1
Регистрация: 02.02.2012
Сообщений: 73
#1

Разбиение списка - C++

29.11.2012, 13:56. Просмотров 330. Ответов 0
Метки нет (Все метки)

Здравствуйте!!! У меня такая проблемка: заданы 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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include "stdafx.h"
#include <list>
#include "iostream"
#include <stdio.h>
#include <conio.h>
 
 
using namespace System;
 
typedef int ListElement;
 
struct list
{
    ListElement element;
    list* next;
    list* pred;
};
 
list* sp1_create(int n);
list* sp2_create(int n);
void prn(list*L);
 
int main()
{
    int n;
    list* L1;
    list* L2;
    list* psp1, *psp2, *start1=0,*start2=0;
    psp1 = new list();
    psp2 = new list();
    Console::WriteLine(L"Введите размер списков:");
    scanf("%d",&n);
    if(n)
    {
        L1=sp1_create(n);
        L2=sp2_create(n);
        Console::WriteLine(L"Полученные списки:");
        prn(L1);
        prn(L2);
    }
    else
        Console::WriteLine(L"Списки пусты!");
    L1=start1;
    L2=start2;
    while(L1 && L2)
    {
        if(L1<L2)
        {
            psp1->next=L2;
            psp2->next=L1;
            L1=L1->next;
            L2=L2->next;
        }
        else
        {
            psp2->next=L2;
            psp1->next=L1;
        }
    }
    prn(psp1);
    prn(psp2);
    system("Pause");
    return 0;
}
 
list* sp1_create(int n)
{
 
   list *start,*new_link,*end;
 
    end = start = NULL;
    for (int i = 0; i < n; i++)
    {
        new_link = new list();
        Console::WriteLine(L"Введите элемент списка №1:");
        scanf("%d",&new_link->element);
        if (!i)
            { 
               start = end = new_link;
               end->pred=start->pred=NULL;
            }
        else
        {
            end->next = new_link;
            end->next->pred =end;
            end = end->next;
            
        }
    }
     end->next = NULL;
     end = end->next;
    return start;
}
 
list* sp2_create(int n)
{
 
   list *start,*new_link2,*end;
 
    end = start = NULL;
    for (int i = 0; i < n; i++)
    {
        new_link2 = new list();
        Console::WriteLine(L"Введите элемент списка №2:");
        scanf("%d",&new_link2->element);
        if (!i)
            { 
               start = end = new_link2;
               end->pred=start->pred=NULL;
            }
        else
        {
            end->next = new_link2;
            end->next->pred =end;
            end = end->next;
            
        }
    }
     end->next = NULL;
     end = end->next;
    return start;
}
 
void prn(list* L)
{ 
    for (; L; L=L->next)
    std::cout <<L->element << ' ';
  std::cout << '\n';
 
}
Подскажите как исправить эту неприятность. Благодарю!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2012, 13:56     Разбиение списка
Посмотрите здесь:

Разбиение на лексемы C++
C++ Разбиение строк
scanf. Разбиение. C++
Разбиение на слагаемые C++
Разбиение функций C++
разбиение на подмножества C++
Разбиение проекта на .h C++
C++ QR -разбиение
Разбиение строки C++
Разбиение точек C++
C++ Разбиение текстовой строки
Разбиение массива C++

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

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

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