|
|
|
Реализация дека (Double-ended-queue). Не поможите?
|
|||
|---|---|---|---|
|
#18+
Кто реализовывал раньше такие структуры данных?? Дело все в том что нужно чтобы: 1.addFirst 2.removeFirst 3.addLast 4.removeLast 5.delete (int i) //удалить i-ый элемент Проблема в том что нужна именно кольцевая реализация(когда голова и хвост ссылаются друг на друга) Тут и вылезает NullPointerException - т.к. обращаюсь к нулевой ссылке Реализация Код: java 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. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. Или может проще было бы Односвязным списком реализовать? Вообщем как решить эту проблему. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2014, 17:41 |
|
||
|
Реализация дека (Double-ended-queue). Не поможите?
|
|||
|---|---|---|---|
|
#18+
SRVdudko , Вы не можете задебагать NullPointerException в своем же коде, или что? :-) Так как про потокобезопасность вы ничего не говорили, то принципиально реализации может быть всего две: на основе массива, или на основе двусвязного списка. Учитывая, что вам нужно удаление по индексу, то я бы в первую очередь смотрел на массив. Если самому не получается реализовать (а по хорошему, самостоятельная реализация может быть нужна только в целях самообучения, ибо все велосипеды уже давным-давно изборетены), то начинайте смотреть исходники java.util.AraryDeque - это именно то, что вам нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.03.2014, 18:20 |
|
||
|
Реализация дека (Double-ended-queue). Не поможите?
|
|||
|---|---|---|---|
|
#18+
SRVdudko, ты определись что тебе надо. В случае кольца фиксированного размера addFirst может и не сработать когда кольцо переполнено и нужно выбрасывать какой-то UserDefined Exception. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2014, 03:36 |
|
||
|
Реализация дека (Double-ended-queue). Не поможите?
|
|||
|---|---|---|---|
|
#18+
Спасибо! Проблема устранена. Но появился еще один вопрос: 1.Немогу никак написать к очереди removeAfter который принимает в качестве аргумента УЗЕЛ, и удаляет след. за ним. Не соображу как можно передать из main этот узел. Т.е. удалить за константное время(а не пробегаться по списку). Отметил в коде тот метод который нужно переписать Код: java 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. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. Мэйн Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2014, 15:26 |
|
||
|
Реализация дека (Double-ended-queue). Не поможите?
|
|||
|---|---|---|---|
|
#18+
SRVdudko, Вообще-то есть стандартный deque http://docs.oracle.com/javase/7/docs/api/java/util/Deque.html http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2014, 17:00 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38600970&tid=2127410]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
24ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
| others: | 202ms |
| total: | 312ms |

| 0 / 0 |
