44 / 44 / 1
Регистрация: 14.10.2008
Сообщений: 168
|
|||||||||||||||||||||
1 | |||||||||||||||||||||
Односвязный, двусвязный список, стек, очередь11.12.2008, 16:14. Показов 51794. Ответов 34
Метки нет (Все метки)
В общем, всем кто нуждается. Баггов вы не найдете.
Односвязный список
36
|
11.12.2008, 16:14 | |
Ответы с готовыми решениями:
34
Реализовать классы «стек» и «очередь» наследованием от базового класса «двусвязный список» Реализовать классы «стек» и «очередь» наследованием от базового класса «двусвязный список» Заменить массив структур на односвязный список, и на двусвязный список Создать двусвязный список групп факультета, где каждая группа представляет собой односвязный список студентов |
0 / 0 / 0
Регистрация: 12.12.2008
Сообщений: 15
|
|
28.02.2009, 15:44 | 2 |
Спасибо.
Только как это у вас в двусвязном списке получается...head->last указывает на саму себя? тогда у вас вывод справа налево не работает...
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
28.02.2009, 19:21 | 3 |
Запросто.
1. Ни один из приведенных классов Node не поддерживает правильное конструирование и присваивание. 2. На более-менее соответствующем Стандарту компиляторе (например, GCC 4.3, 4.4) ни один из примеров даже не скомпилируется. Далее. Если уж это C++ (судя по #include <iostream>), то имело бы смысл все структуры данных (списки, стек и очередь) оформить в виде классов. Исправь, плз. После исправления - довольно полезные примеры будут.
2
|
23 / 23 / 3
Регистрация: 20.02.2009
Сообщений: 59
|
|
01.03.2009, 00:34 | 5 |
1
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
01.03.2009, 10:44 | 7 |
Это, на самом деле, зависит от реализации new в компиляторе. Должно быть выброшено исключение - но MSVC++, например, не выбросит исключение и вернет NULL. Борланд, по-моему, тоже.
0
|
23 / 23 / 3
Регистрация: 20.02.2009
Сообщений: 59
|
|
01.03.2009, 13:29 | 8 |
Интересно, с каких это пор MSVC++ в операторе new не бросает исключение?
Предлагаю посмотреть реализацию в файле new.cpp.
0
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
01.03.2009, 21:43 | 9 |
TurboDune, CheshireCat прав. Это зависит от реализации в конкретном компиляторе. new может работать мовершенно по-разному на различных компиляторах. Например, где-то он реализован через malloc, где еще через что. Поэтому где-то будет исключение, а где-то просто NULL. Я сталкивался и с первым и со вторым случаем.
0
|
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
|
|
01.03.2009, 22:09 | 10 |
Короче, любая программа несовершенна...
0
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|||||||||||
02.03.2009, 11:37 | 11 | ||||||||||
На самом деле, что произойдет при неудачной попытке выделить память - довольно-таки неоднозначная ситуация. Более того, даже на одном и том же компиляторе это зависит от кода!! Я немного поэкспериментировал с доступными мне компиляторами, и вот какие результаты получились:
Тест 1
Добавлено через 32 минуты 40 секунд PS: юзать new(std::nothrow) не предлагать - бо имеется большой объем legacy code... и переписывать его - не вариант.
2
|
23 / 23 / 3
Регистрация: 20.02.2009
Сообщений: 59
|
|
02.03.2009, 11:58 | 12 |
Спасибо CheshireCat! Вот это действительно полезные сведения.
Добавлено через 15 минут 20 секунд Хотя так и не понял чем принципиально отличается Тест1 от Теста2, что так значительно влияет на результаты.
1
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
02.03.2009, 12:48 | 13 |
Различие между тестами в том, что Тест1 использует заголовки и код в стиле C++, а Тест2 - old-style заголовки и код в стиле C. Вот цитата из MSDN (июль 2003):
(естественно, касается только компиляторов MS Visual C++) Beginning in Visual C++ .NET 2002, the CRT's new function (in libc.lib, libcd.lib, libcmt.lib, libcmtd.lib, msvcrt.lib, and msvcrtd.lib) will continue to return NULL if memory allocation fails. However, the new function in the Standard C++ Library (in libcp.lib, libcpd.lib, libcpmt.lib, libcpmtd.lib, msvcprt.lib, and msvcprtd.lib) will support the behavior specified in the C++ standard, which is to throw a std::bad_alloc exception if the memory allocation fails. Normally, if you #include one of the C++ standard headers, like <new>, you'll get a /defaultlib directive in your object that will reference the appropriate C++ Standard Library according to the CRT model you used (the /M* compiler options). Generally, that will cause the linker to use the throwing operator new from the C++ Standard Library instead of the nonthrowing one from the main CRT, because the order of defaultlib directives will cause libcp.lib to be searched before libc.lib (under /ML).
0
|
44 / 44 / 1
Регистрация: 14.10.2008
Сообщений: 168
|
|
29.03.2009, 17:55 [ТС] | 14 |
Это для студентов. Не будьте строги
0
|
real199007
|
|
02.05.2009, 13:11 | 15 |
СЛУШАЙ Vasiliusis А ТЫ МОЖЕШЬ В ОДНОСВЯЗАННОМ СПИСКЕ СОРТИРОВКУ ПО ВОЗРАСТАНИЮ ИЛИ УБЫВАНИЮ СДЕЛАТЬ
Добавлено через 6 минут 21 секунду Vasiliusis, А ТЫ МОЖЕШЬ В ОДНОСВЯЗАННОМ СПИСКЕ СОРТИРОВКУ ПО ВОЗРАСТАНИЮ ИЛИ УБЫВАНИЮ СДЕЛАТЬ |
dpi
|
||||||
02.05.2009, 14:20 | 16 | |||||
Используй класс:
|
real199007
|
|
02.05.2009, 19:26 | 17 |
dpi,
слушай я в С++ не бум бум вот в верху есть Односвязный список построенный Vasiliusis ты можешь туда запихнуть сортировку dpi, вот в верху есть Односвязный список построенный Vasiliusis ты можешь туда запихнуть сортировку |
1 / 1 / 1
Регистрация: 09.02.2009
Сообщений: 31
|
|
20.05.2009, 20:55 | 18 |
а кто нибудь знает как насследованием из класса стек сделать дек
0
|
8 / 8 / 1
Регистрация: 15.03.2009
Сообщений: 267
|
|
14.10.2009, 19:41 | 19 |
а как "очередь" будет "звучать"(написано) на СИ, а не Си++?
А то в Си я не очень силен. Если, кто может, то переделйте)
0
|
apis1
|
|
22.12.2009, 14:42 | 20 |
да спасибо
очередь пошла на DEVCPP как дети в школу только int main потребовала а зачем здесь windows.h? |
22.12.2009, 14:42 | |
22.12.2009, 14:42 | |
Помогаю со студенческими работами здесь
20
Двусвязный в односвязный список Преобразовать односвязный список в двусвязный Преобразовать односвязный список в двусвязный Преобразовать односвязный список в двусвязный список Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |