#include <stdio.h>
#include <string.h>
#define MAX_ELEMENTS 10
#define EMPTY_ELEMVAL 0
#define ARR_ISEMPTY(arr) ( (arr)[0] == EMPTY_ELEMVAL )
#define ARR_ISFULL(arr, len) ( (arr)[(len)-1] != EMPTY_ELEMVAL )
typedef enum { FALSE=0, TRUE } Bool;
// -------------------------------------------------------------------------------------
void arr_print( int arr[], int maxelems )
{
register int i;
for (i=0; i < maxelems; i++)
return;
}
// -------------------------------------------------------------------------------------
int arr_append( int arr[], int maxelems, int val)
{
if ( ARR_ISFULL(arr, maxelems) )
return -1;
if ( ARR_ISEMPTY(arr) ) {
arr[0] = val;
return 0;
}
register int i;
for (i=maxelems-1; arr[i] == EMPTY_ELEMVAL; i--)
;
arr[++i] = val;
return i;
}
// -------------------------------------------------------------------------------------
Bool arr_prepend( int arr[], int maxelems, int val)
{
if ( ARR_ISFULL(arr, maxelems) )
return FALSE;
memmove( &arr
[1], &arr
[0], (maxelems
-1) * sizeof(int) ); arr[0] = val;
return TRUE;
}
// --------------------------------------------------------------------------------------
int arr_elemindex( int arr[], int maxelems, int val )
{
register int i;
for (i=0; i < maxelems && arr[i] != val; i++)
;
return i == maxelems ? -1 : i;
}
// -------------------------------------------------------------------------------------
Bool arr_delete( int arr[], int maxelems, int val)
{
register int i;
register int elem = arr_elemindex( arr, maxelems, val);
if ( elem == -1 )
return FALSE;
for (i=elem; arr[i+1] != EMPTY_ELEMVAL && i < maxelems-1; i++)
arr[i] = arr[i+1];
arr[i] = EMPTY_ELEMVAL;
return TRUE;
}
// -------------------------------------------------------------------------------------
int main( void )
{
int arr[ MAX_ELEMENTS ] = {10, 20, 30, 40, 50, 60, 70, 80, 0, 0};
// μηδενισμός όλων των στοιχείων του arr
// memset(arr, 0, MAX_ELEMENTS * sizeof(int) );
arr_print( arr, MAX_ELEMENTS );
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCiNkZWZpbmUgTUFYX0VMRU1FTlRTCTEwCiNkZWZpbmUgRU1QVFlfRUxFTVZBTAkwCgojZGVmaW5lIEFSUl9JU0VNUFRZKGFycikJKCAoYXJyKVswXSA9PSBFTVBUWV9FTEVNVkFMICkKI2RlZmluZSBBUlJfSVNGVUxMKGFyciwgbGVuKQkoIChhcnIpWyhsZW4pLTFdICE9IEVNUFRZX0VMRU1WQUwgKQoKdHlwZWRlZiBlbnVtIHsgRkFMU0U9MCwgVFJVRSB9IEJvb2w7CgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnZvaWQgYXJyX3ByaW50KCBpbnQgYXJyW10sIGludCBtYXhlbGVtcyApCnsKCXJlZ2lzdGVyIGludCBpOwoKCWZvciAoaT0wOyBpIDwgbWF4ZWxlbXM7IGkrKykKCQlwcmludGYoIiVkICIsIGFycltpXSk7CglwdXRjaGFyKCdcbicpOwoKCXJldHVybjsKfQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmludCBhcnJfYXBwZW5kKCBpbnQgYXJyW10sIGludCBtYXhlbGVtcywgaW50IHZhbCkKewoJaWYgKCBBUlJfSVNGVUxMKGFyciwgbWF4ZWxlbXMpICkKCQlyZXR1cm4gLTE7CgoJaWYgKCBBUlJfSVNFTVBUWShhcnIpICkgewoJCWFyclswXSA9IHZhbDsKCQlyZXR1cm4gMDsKCX0KCXJlZ2lzdGVyIGludCBpOwoJZm9yIChpPW1heGVsZW1zLTE7IGFycltpXSA9PSBFTVBUWV9FTEVNVkFMOyBpLS0pCgkJOwoJYXJyWysraV0gPSB2YWw7CglyZXR1cm4gaTsKfQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkJvb2wgYXJyX3ByZXBlbmQoIGludCBhcnJbXSwgaW50IG1heGVsZW1zLCBpbnQgdmFsKQp7CglpZiAoIEFSUl9JU0ZVTEwoYXJyLCBtYXhlbGVtcykgKQoJCXJldHVybiBGQUxTRTsKCgltZW1tb3ZlKCAmYXJyWzFdLCAmYXJyWzBdLCAobWF4ZWxlbXMtMSkgKiBzaXplb2YoaW50KSApOwoJYXJyWzBdID0gdmFsOwoKCXJldHVybiBUUlVFOwp9Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmludCBhcnJfZWxlbWluZGV4KCBpbnQgYXJyW10sIGludCBtYXhlbGVtcywgaW50IHZhbCApCnsKCXJlZ2lzdGVyIGludCBpOwoJZm9yIChpPTA7IGkgPCBtYXhlbGVtcyAmJiBhcnJbaV0gIT0gdmFsOyBpKyspCgkJOwoJcmV0dXJuIGkgPT0gbWF4ZWxlbXMgPyAtMSA6IGk7Cn0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpCb29sIGFycl9kZWxldGUoIGludCBhcnJbXSwgaW50IG1heGVsZW1zLCBpbnQgdmFsKQp7CglyZWdpc3RlciBpbnQgaTsKCXJlZ2lzdGVyIGludCBlbGVtID0gYXJyX2VsZW1pbmRleCggYXJyLCBtYXhlbGVtcywgdmFsKTsKCWlmICggZWxlbSA9PSAtMSApCgkJcmV0dXJuIEZBTFNFOwoKCWZvciAoaT1lbGVtOyBhcnJbaSsxXSAhPSBFTVBUWV9FTEVNVkFMICYmIGkgPCBtYXhlbGVtcy0xOyBpKyspCgkJYXJyW2ldID0gYXJyW2krMV07CglhcnJbaV0gPSBFTVBUWV9FTEVNVkFMOwoKCXJldHVybiBUUlVFOwp9Ci8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KaW50IG1haW4oIHZvaWQgKQp7CglpbnQgYXJyWyBNQVhfRUxFTUVOVFMgXSA9IHsxMCwgMjAsIDMwLCA0MCwgNTAsIDYwLCA3MCwgODAsIDAsIDB9OwoKCQkJCQkJLy8gzrzOt860zrXOvc65z4POvM+Mz4Igz4zOu8+Jzr0gz4TPic69IM+Dz4TOv865z4fOtc6vz4nOvSDPhM6/z4UgYXJyCi8vCW1lbXNldChhcnIsIDAsIE1BWF9FTEVNRU5UUyAqIHNpemVvZihpbnQpICk7CgoJYXJyX3ByaW50KCBhcnIsIE1BWF9FTEVNRU5UUyApOwoKCXJldHVybiAwOwp9Cgo=