Advertisement
Guest User

Untitled

a guest
Dec 9th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct dynamic_array_st {
  5. int *parray;
  6. int filled;
  7. int capacity;
  8. } DYN_ARRAY;
  9.  
  10. DYN_ARRAY init_array(DYN_ARRAY d);
  11. void print_descriptor(DYN_ARRAY d);
  12. void print_array(DYN_ARRAY d);
  13. DYN_ARRAY resize_array(DYN_ARRAY d);
  14. DYN_ARRAY add(DYN_ARRAY d, int value);
  15. int size(DYN_ARRAY d);
  16. DYN_ARRAY destroy_array(DYN_ARRAY d);
  17.  
  18. int main() {
  19. DYN_ARRAY d;
  20.  
  21. printf("Pre inicijalizacije niza...\n");
  22. print_descriptor(d);
  23.  
  24. printf("Inicijalizacija niza...\n");
  25. d = init_array(d);
  26. print_descriptor(d);
  27. print_array(d);
  28.  
  29. printf("Promena velicine niza...\n");
  30. d = resize_array(d);
  31. print_descriptor(d);
  32. print_array(d);
  33.  
  34. printf("Dodavanje elemenata...\n");
  35. d = add(d, 1);
  36. d = add(d, 2);
  37. d = add(d, 3);
  38. print_descriptor(d);
  39. print_array(d);
  40.  
  41. printf("Kapacitet niza: %d\n", size(d));
  42.  
  43. printf("Unistavanje niza...\n");
  44. d = destroy_array(d);
  45. print_descriptor(d);
  46. print_array(d);
  47.  
  48. return EXIT_SUCCESS;
  49. }
  50.  
  51. DYN_ARRAY init_array(DYN_ARRAY d) {
  52. d.parray = NULL;
  53. d.filled = 0;
  54. d.capacity = 0;
  55.  
  56. return d;
  57. }
  58.  
  59. void print_descriptor(DYN_ARRAY d) {
  60. printf("Descriptor:\n");
  61. printf("\tparray -> %p\n", d.parray);
  62. printf("\tfilled -> %d\n", d.filled);
  63. printf("\tcapacity -> %d\n", d.capacity);
  64. }
  65.  
  66. void print_array(DYN_ARRAY d) {
  67. int i;
  68.  
  69. printf("[");
  70. for (i = 0; i < d.filled; i++) {
  71. if (i != 0)
  72. printf(", ");
  73. printf("%d", d.parray[i]);
  74. }
  75. printf("]\n");
  76. }
  77.  
  78.  
  79. DYN_ARRAY resize_array(DYN_ARRAY d) {
  80. if (d.parray == NULL) {
  81. d.capacity = 1;
  82. } else {
  83. d.capacity *= 2;
  84. }
  85. d.parray = realloc(d.parray, d.capacity * sizeof(int));
  86.  
  87. return d;
  88. }
  89.  
  90.  
  91. DYN_ARRAY add(DYN_ARRAY d, int value) {
  92. if (d.filled == d.capacity) {
  93. d = resize_array(d);
  94. }
  95. d.parray[d.filled] = value;
  96. d.filled++;
  97.  
  98. return d;
  99. }
  100.  
  101.  
  102. int size(DYN_ARRAY d) {
  103. return d.capacity;
  104. }
  105.  
  106. DYN_ARRAY destroy_array(DYN_ARRAY d) {
  107. free(d.parray);
  108. d = init_array(d);
  109.  
  110. return d;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement