Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Сегодня проектировал стек LIFO, вот что получилось stack.h Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. stack.c Код: plaintext 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. Подскажите пожалуйста, как правильно реализовать функцию createStack() ? Мне не нравится использование SEMPTY, но пока не придумал как от этого избавиться. Как бы вы поступили ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 03:37 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercuryМне не нравится использование SEMPTY, но пока не придумал как от этого избавиться. Как бы вы поступили ? Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 10:54 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Еще лучше кидать исключение, но их нет в С. Можно их имитировать через setjump/longjump. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 11:27 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Считаю, что C-style стек должен выглядеть как-то так: stack.h Код: plaintext 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. stack.c Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 12:53 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercuryСегодня проектировал стек LIFO, вот что получилось Если ты идёшь по пути чистого С, то один malloc лишний: гораздо удобнее работать со структурой переменного размера, поскольку память не фрагментируется. Указывать максимальный размер стека при создании, возможно, соответствует техзаданию, но тоже абсолютно излишне. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 13:17 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Аноним123, хочу реализовать стек как один объект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 13:33 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovSashaMercuryСегодня проектировал стек LIFO, вот что получилось Если ты идёшь по пути чистого С, то один malloc лишний: гораздо удобнее работать со структурой переменного размера, поскольку память не фрагментируется. Указывать максимальный размер стека при создании, возможно, соответствует техзаданию, но тоже абсолютно излишне. Вы предлагаете реаллоцировать при добавлении элемента? Если я вас правильно понял, то думаю что это спорный момент. Реаллоцирование тратит много времени. Максимальный размер стека необходим для безопасной работы программы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 13:39 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВы предлагаете реаллоцировать при добавлении элемента? Нет, я предлагаю использовать связанный список буферов. Возможно, заранее предопределённого размера. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 13:47 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Сейчас коллеги мы дойдем до формулы расчёта Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 14:14 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovSashaMercuryВы предлагаете реаллоцировать при добавлении элемента? Нет, я предлагаю использовать связанный список буферов. Возможно, заранее предопределённого размера. Связанный список и надо использовать. Т.е. что значит -- надо ? Обычно так делают. SashaMercury, у тебя это даже не совсем стек. Т.е. стек, но на базе массива. А обычно делают стек на базе связного/двусвязного списка. Хотя, конечно, и такой стек имеет право на существование, у обоих есть свои преимущества и недостатки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 14:52 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
MasterZivDimitry Sibiryakovпропущено... Нет, я предлагаю использовать связанный список буферов. Возможно, заранее предопределённого размера. Связанный список и надо использовать. Т.е. что значит -- надо ? Обычно так делают. SashaMercury, у тебя это даже не совсем стек. Т.е. стек, но на базе массива. А обычно делают стек на базе связного/двусвязного списка. Хотя, конечно, и такой стек имеет право на существование, у обоих есть свои преимущества и недостатки. т.е. всё-таки это стек, конечно. Такой стек, и именно реализация на базе массива имеет право на существование в первую очередь. PS В каком году появился связный список, и в каком году Алан Тьюринг придумал стек ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 15:37 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercury, SSВ каком году появился связный список, и в каком году Алан Тьюринг придумал стек ? До середины 20 века появился стек. А ответ на первый вопрос я не знаю, ту книгу что вы мне рекомендовали(об истории IT), пока даже не прочитал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 15:40 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercuryPS В каком году появился связный список, и в каком году Алан Тьюринг придумал стек ? Году в 50-55 стек придумали. Это если аппаратно первая ЭВМ была без стека. Если была -- ещё раньше, в 45. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2015, 16:24 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
MasterZivSashaMercuryPS В каком году появился связный список, и в каком году Алан Тьюринг придумал стек ? Году в 50-55 стек придумали. Это если аппаратно первая ЭВМ была без стека. Если была -- ещё раньше, в 45. Так и предполагал. Значит проблему с функцией push() в данном примере нельзя решить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 01:40 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
можно и так: return SEMPTY; ----> raise(SIGSEGV); Вполне подходит по смыслу к попытке достать число из пустого стека. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 03:16 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
wst, если вы комментировали моё сообщение про push(), то я о другом спрашиваю . А вы говорите про функцию pop() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 06:01 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Стек я бы делал, как выше писали, в виде связанного списка массивов. Это минимизирует аллокации, не требует реаллокаций, и не требует при создании стека заранее задавать размер. Задача контроля за чрезмерным выделением памяти не должна влиять на структуру данных. Никто вам не мешает контролировать это при любой реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 08:30 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, не очень понятно. Как он может не требовать реаллокации ? Только в том случае если мы выделили памяти сразу столько, сколько нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 08:43 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercury, Каждый вызов push() аллоцирует объём памяти, равный размеру данных плюс размер указателя на следующий элемент. Каждый pop() освобождает такой же объём; реаллокации нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 09:55 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercury, Все эти споры дают понять, почему в STL стек и очередь -- это адаптеры, реализованные над тремя базовыми структурами -- vector, deque и list. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 09:58 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
RWolf, теперь понятно Ладно, с учётом того что сейчас это сделано так, как всё-таки решить проблему выделенную жёлтым цветом ? Возможно ли это в данной реализации ? Anatoly Moskovsky, как же контролировать объём данных ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 10:28 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercuryкак всё-таки решить проблему выделенную жёлтым цветом ? Убрать скобки. И в следующей строке - тоже. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:58 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Елы-палы, я не заметил этот вопрос... Да всё просто -- литерал с именем функции -- это переменная с типом "указатель на функцию с данной сигнатурой". Так что -- да, достаточно в строке убрать скобки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:25 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
Следующая за жёлтой строка, кстати, неверна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:27 |
|
||
|
Различные структуры данных. Реализация
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЛадно, с учётом того что сейчас это сделано так, как всё-таки решить проблему выделенную жёлтым цветом ? Возможно ли это в данной реализации ? Как исправить - уже сказали. Но суть в том что указатели на функции в экземплярах объекта вообще не нужны - там нет никакого полиморфного поведения. Используйте обычные свободные функции. SashaMercuryкак же контролировать объём данных ? Хранить кол-во элементов и в push проверять достигнут ли предел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 14:22 |
|
||
|
|

start [/forum/search_topic.php?author=siebentearbeit&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 712ms |
| total: | 888ms |

| 0 / 0 |
