fork(1) download
  1. #include <stdio.h>
  2.  
  3. i,t,e,m;f(p,n,s)int*p,*n,*s;{s=p;for(i=m=e=0;i++<*n;s+=t=m+*s||i<*n&&p[1],e+=t,m=*p++)*s=*p;*n=e;}
  4.  
  5. int main(void) {
  6. int arr[] = {0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 4, 0, 1, 0, 0}, *ptr = arr;
  7. int size = sizeof(arr)/sizeof(*arr);
  8.  
  9. //print initial list
  10. printf("%d: ", size);
  11. while (size--)
  12. printf("%d ", *ptr++);
  13. puts("");
  14.  
  15. //print modified list
  16. ptr = arr;
  17. size = sizeof(arr)/sizeof(*arr);
  18. f(arr, &size);
  19. printf("%d: ", size);
  20. while (size--)
  21. printf("%d ", *ptr++);
  22. puts("");
  23. return 0;
  24. }
  25.  
Success #stdin #stdout 0s 2156KB
stdin
Standard input is empty
stdout
15: 0 0 0 8 0 0 0 5 0 0 4 0 1 0 0 
11: 0 8 0 0 5 0 0 4 0 1 0