fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct list{
  5. char element;
  6. struct list * node;
  7. } list;
  8.  
  9. int push(char data, list **ptr);
  10. char pop(list **ptr);
  11.  
  12. int push(char data, list **ptr){
  13. list * tmp;
  14. if( (tmp = malloc(sizeof(list))) == NULL ){
  15. fputs("Memory allocation error!\n", stderr);
  16. exit(1);
  17. }
  18. tmp->node = (*ptr)->node;
  19. tmp->element = data;
  20. (*ptr)->node = tmp;
  21. return 0;
  22. }
  23.  
  24. char pop(list **ptr){
  25. if( (*ptr)->node != NULL ){
  26. char tmp;
  27. list * temp = (*ptr)->node;
  28. tmp = (*ptr)->node->element;
  29. (*ptr)->node = (*ptr)->node->node;
  30. free(temp);
  31. return tmp;
  32. } else {
  33. printf("\nMismatched pop!\n");
  34. exit(0); //Not a program error..
  35. }
  36. }
  37.  
  38. int main(){
  39. list * head;
  40. head = malloc(sizeof(list));
  41.  
  42. int i;
  43.  
  44. for(i = 0;i <= 10; i++)
  45. push(i, &head);
  46. for(i = 0;i <= 10; i++)
  47. printf("%di: %d\n",i,pop(&head));
  48. return 0;
  49. }
Success #stdin #stdout 0.02s 1852KB
stdin
Standard input is empty
stdout
0i: 10
1i: 9
2i: 8
3i: 7
4i: 6
5i: 5
6i: 4
7i: 3
8i: 2
9i: 1
10i: 0