Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2012, 14:35   #1
СергейАС
Пользователь
 
Регистрация: 31.10.2011
Сообщений: 14
По умолчанию Ошибка в коде

Необходимо создать новый список из элементов трёх списков так, чтобы
получился упорядоченный список(выполнить слияние списков).(Язык С++)
Я написал такой код, но в итоге выводится только элементы 1-го списка.

#include "stdafx.h"
#include <list>
#include "iostream"
#include <stdio.h>
#include <conio.h>
#include<iostream>
#include<cmath>

using namespace System;

struct list
{
int inf;
list* next;
};

list* sp1_create();
list* sp2_create();
list* sp3_create();
void print(list*L);
void merge_list(list *start, list *lst);
list* del(list*L);

int main()
{
int n;
list* F1;
list* F2;
list* F3;
list* p;
F1=sp1_create();
F2=sp2_create();
F3=sp3_create();
Console::WriteLine(L"Полученные списки: ");
print(F1);
print(F2);
print(F3);
merge_list(F1,F2);
merge_list(F1,F3);
Console::WriteLine(L"Полученный список: ");
print(F1);
p=del(F1);
p=del(F2);
p=del(F3);
system("Pause");
return 0;
}

list* sp1_create()
{

list *start,*new_link1,*new_link2,*new_l ink3,*end;
int n;
Console::WriteLine(L"Введите размер списка 1: ");
scanf("%d",&n);
end = start = NULL;
for (int i = 0; i < n; i++)
{
new_link1 = new list();
Console::WriteLine(L"Введите элемент списка:");
scanf("%d",&new_link1->inf);
if (!i)
start = end = new_link1;
else
{
end->next = new_link1;
end = end->next;
}
}
end->next = NULL;
end = end->next;
return start;
}

list* sp2_create()
{

list *start,*new_link1,*new_link2,*new_l ink3,*end;
int n;
Console::WriteLine(L"Введите размер списка 2: ");
scanf("%d",&n);
end = start = NULL;
for (int i = 0; i < n; i++)
{
new_link2 = new list();
Console::WriteLine(L"Введите элемент списка:");
scanf("%d",&new_link2->inf);
if (!i)
start = end = new_link2;
else
{
end->next = new_link2;
end = end->next;
}
}
end->next = NULL;
end = end->next;
return start;
}

list* sp3_create()
{

list *start,*new_link1,*new_link2,*new_l ink3,*end;
int n;
Console::WriteLine(L"Введите размер списка 3: ");
scanf("%d",&n);
end = start = NULL;
for (int i = 0; i < n; i++)
{
new_link3 = new list();
Console::WriteLine(L"Введите элемент списка:");
scanf("%d",&new_link3->inf);
if (!i)
start = end = new_link3;
else
{
end->next = new_link3;
end = end->next;
}
}
end->next = NULL;
end = end->next;
return start;
}

void print(list *L)
{
for (; L; L=L->next)
std::cout <<L->inf << ' ';
std::cout << '\n';

}
list* del(list*L)
{
list*p;
for (int i=1; L; L=L->next,i++)
{
if(i==3)
p=L;
}
return p;
}
void merge_list(list *start, list *lst)
{
list* end = start;
while(end)
end = end->next;
end = lst;
}

И если не сложно, подскажите как упорядочить список.
Заранее спасибо!!!
СергейАС вне форума Ответить с цитированием
Старый 23.10.2012, 14:59   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
(Язык С++)
Врете. С++ CLI

Код:
while(end)
 end = end->next;
 end = lst;
Вы нашли нулл, присвоили ему что-то и... хорошо, что у вас не упало сразу. Что делать? Подумать...
Если старт нулл - то старту присвоить указатель.
Если старт не нулл - то пробежать по списку до элемента, у которого поле некст нулл и полю некст этого элемента присвоить новое значение.

Цитата:
И если не сложно, подскажите как упорядочить список.
Как обычно: либо сортировка в конце, либо вставлять упорядоченно.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в коде! sokolik-117845 Общие вопросы Delphi 1 10.04.2012 14:17
Где ошибка в этом исходном коде на языке Си? Или ошибка в Excel? ArchiCurtis Помощь студентам 2 07.04.2012 14:16
Ошибка в коде artem611 Помощь студентам 1 14.03.2012 18:18
Ошибка в коде. Сергей Наливко Общие вопросы C/C++ 5 15.07.2011 14:43
Ошибка в коде, ошибка в css или это проблема с совместимостью с браузерами? ankris HTML и CSS 5 23.11.2010 16:58