|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
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 | ||
Старожил
Регистрация: 15.02.2010
Сообщений: 15,707
|
Цитата:
Код:
Если старт нулл - то старту присвоить указатель. Если старт не нулл - то пробежать по списку до элемента, у которого поле некст нулл и полю некст этого элемента присвоить новое значение. Цитата:
|
||
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка в коде! | 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 |