0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 17
|
|||||||||||
1 | |||||||||||
Соединить два стека в один18.12.2011, 02:00. Показов 5602. Ответов 23
Метки нет (Все метки)
Есть два стека, необходимо соединить эти стеки в один. Вот сделал, но выводиться в стеки3 только первый стек.
Пробывал через указатель, но всеравно не работает.
0
|
18.12.2011, 02:00 | |
Ответы с готовыми решениями:
23
Создать два новых стека, с четными и нечетными элементами первоначального стека Соединить два файла в один Соединить два массива Raid0 в один Как соединить два кода в один? |
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
18.12.2011, 02:16 | 2 |
Сразу бросается в глаза и кажется подозрительным.
Добавлено через 4 минуты Перед тем как вы объедините два стека в один, вы два исходных стека очищаете.
0
|
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 17
|
|
18.12.2011, 02:18 [ТС] | 3 |
Все равно не работает.
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
||||||
18.12.2011, 02:19 | 4 | |||||
0
|
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 17
|
|
18.12.2011, 02:21 [ТС] | 5 |
N - это размер стека, 3 стека имеют одинаковый размер
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|||||||||||
18.12.2011, 02:24 | 6 | ||||||||||
Добавлено через 2 минуты
Т.е. этот код справедлив только тогда, когда top первого стека будет равен 99.
1
|
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 17
|
|
18.12.2011, 02:34 [ТС] | 7 |
а как можно по другому это код, тогда изменить ?
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
18.12.2011, 02:46 | 8 |
Сделать для каждого стека свой top. Для этого придется много чего изменить.
Потом в steck3 копировать элементы steck1[0]...steck1[topSteck1] и дальше steck2[0]...steck2[topSteck2].
0
|
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 17
|
|
18.12.2011, 02:52 [ТС] | 9 |
а копирования делать с помощью memcpy
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
18.12.2011, 02:57 | 10 |
memcpy вообще опасная функция. Лучше делайте циклами.
Вообще не используйте ее, если у вас не будет серьезных доводов в использовании memcpy. А такие доводы у вас могут появится ТОЛЬКО через много лет.
0
|
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 17
|
||||||
18.12.2011, 03:10 [ТС] | 11 | |||||
А разве через указатели я не так делаю ???
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
18.12.2011, 03:14 | 12 |
А как вы выводите результат?
0
|
Заблокирован
|
|
18.12.2011, 04:18 | 13 |
я бы немного консретизировал. В принципе особо страшного ничего нет, но всегда стоит помнить что memcpy может совершить что угодно (непредсказуемый результат) если источник данных пересекается с приемником. Грубо говоря если копировать данные из одного массива в тот же массив.
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
18.12.2011, 04:32 | 14 |
Тогда почему вы не заметили ошибку в коде ТС?
Вот вы знаете, что работать с голыми указателями и new\delete опасно. Если нет причин серьезных использовать голые указатели и new\delete, то лучше с ними не работать. Тут тот же принцип. memcpy - это работа с памятью, а не с массивами. Добавлено через 4 минуты Помни, не помни, но от ошибок никто не застрахован.
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|||||||||||
18.12.2011, 04:47 | 16 | ||||||||||
Да я не про стек.
0
|
Заблокирован
|
|
18.12.2011, 05:04 | 17 |
про кривые руки знаю (это я не про вас, а в общем), про утечку памяти - нет.
не вижу я там ошибок, только могу предположить что голые цифры не труЪ, а sizeof(...) * n - труЪ. Ну и конечно главное за пределы не выйти, а какой там размер массивов я тоже не в курсе Добавлено через 3 минуты с этим кстати я согласен, но с другой точки зрения. Не с той что есть опасность, а с той, что доступ к данным на порядок быстрее.
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
18.12.2011, 05:06 | 18 |
0
|
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 17
|
||||||
18.12.2011, 14:41 [ТС] | 19 | |||||
В main-e
0
|
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
|
|
18.12.2011, 16:10 | 20 |
Я же говорил, что размер третьего стека равен 2*N
0
|
18.12.2011, 16:10 | |
18.12.2011, 16:10 | |
Помогаю со студенческими работами здесь
20
Соединить два упорядоченных массива в один Как соединить два проекта в один Как соединить два фильтра в один? Как соединить два жёских диска в один???? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |