fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAX_ELEMENTS 10
  5. #define EMPTY_ELEMVAL 0
  6.  
  7. #define ARR_ISEMPTY(arr) ( (arr)[0] == EMPTY_ELEMVAL )
  8. #define ARR_ISFULL(arr, len) ( (arr)[(len)-1] != EMPTY_ELEMVAL )
  9.  
  10. typedef enum { FALSE=0, TRUE } Bool;
  11.  
  12. // -------------------------------------------------------------------------------------
  13. void arr_print( int arr[], int maxelems )
  14. {
  15. register int i;
  16.  
  17. for (i=0; i < maxelems; i++)
  18. printf("%d ", arr[i]);
  19. putchar('\n');
  20.  
  21. return;
  22. }
  23. // -------------------------------------------------------------------------------------
  24. int arr_append( int arr[], int maxelems, int val)
  25. {
  26. if ( ARR_ISFULL(arr, maxelems) )
  27. return -1;
  28.  
  29. if ( ARR_ISEMPTY(arr) ) {
  30. arr[0] = val;
  31. return 0;
  32. }
  33. register int i;
  34. for (i=maxelems-1; arr[i] == EMPTY_ELEMVAL; i--)
  35. ;
  36. arr[++i] = val;
  37. return i;
  38. }
  39. // -------------------------------------------------------------------------------------
  40. Bool arr_prepend( int arr[], int maxelems, int val)
  41. {
  42. if ( ARR_ISFULL(arr, maxelems) )
  43. return FALSE;
  44.  
  45. memmove( &arr[1], &arr[0], (maxelems-1) * sizeof(int) );
  46. arr[0] = val;
  47.  
  48. return TRUE;
  49. }
  50. // --------------------------------------------------------------------------------------
  51. int arr_elemindex( int arr[], int maxelems, int val )
  52. {
  53. register int i;
  54. for (i=0; i < maxelems && arr[i] != val; i++)
  55. ;
  56. return i == maxelems ? -1 : i;
  57. }
  58. // -------------------------------------------------------------------------------------
  59. Bool arr_delete( int arr[], int maxelems, int val)
  60. {
  61. register int i;
  62. register int elem = arr_elemindex( arr, maxelems, val);
  63. if ( elem == -1 )
  64. return FALSE;
  65.  
  66. for (i=elem; arr[i+1] != EMPTY_ELEMVAL && i < maxelems-1; i++)
  67. arr[i] = arr[i+1];
  68. arr[i] = EMPTY_ELEMVAL;
  69.  
  70. return TRUE;
  71. }
  72. // -------------------------------------------------------------------------------------
  73. int main( void )
  74. {
  75. int arr[ MAX_ELEMENTS ] = {10, 20, 30, 40, 50, 60, 70, 80, 0, 0};
  76.  
  77. // μηδενισμός όλων των στοιχείων του arr
  78. // memset(arr, 0, MAX_ELEMENTS * sizeof(int) );
  79.  
  80. arr_print( arr, MAX_ELEMENTS );
  81.  
  82. return 0;
  83. }
  84.  
  85.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty