fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct node{
  5. int val;
  6. struct node*next;
  7. }Node;
  8.  
  9. Node*head=NULL;
  10.  
  11. Node*createN(int x){
  12. Node*newnode;
  13. newnode=(Node*)malloc(sizeof(Node));
  14. newnode->val=x;
  15. newnode->next=NULL;
  16. return newnode;
  17. }
  18.  
  19. void freeL(){
  20. Node*p;
  21. while(head!=NULL){
  22. p=head->next;
  23. free(head);
  24. head=p;
  25. }
  26. }
  27.  
  28. void printL(){
  29. Node*p=head;
  30. while(p!=NULL){
  31. printf("%d ",p->val);
  32. p=p->next;
  33. }
  34. printf("\n");
  35. }
  36.  
  37. void push(int x){
  38. Node*newnode=createN(x);
  39. newnode->next=head;
  40. head=newnode;
  41. }
  42.  
  43. int pop(){
  44. if(head==NULL)return 0;
  45. int val=head->val;
  46. Node*temp=head;
  47. head=head->next;
  48. free(temp);
  49. return val;
  50. }
  51.  
  52. void enqueue(int x){
  53. Node*newnode=createN(x);
  54. if(head==NULL){
  55. head=newnode;
  56. }else{
  57. Node*p=head;
  58. while(p->next!=NULL)p=p->next;
  59. p->next=newnode;
  60. }
  61. }
  62.  
  63. int dequeue(){
  64. if(head==NULL)return 0;
  65. int val=head->val;
  66. Node*temp=head;
  67. head=head->next;
  68. free(temp);
  69. return val;
  70. }
  71.  
  72. int main(void){
  73. int s1,s2,s3,q1,q2,q3;
  74.  
  75. push(1);
  76. push(2);
  77. push(3);
  78. s1=pop();
  79. s2=pop();
  80. s3=pop();
  81. printf("%d %d %d\n",s1,s2,s3);
  82.  
  83. enqueue(1);
  84. enqueue(2);
  85. enqueue(3);
  86. q1=dequeue();
  87. q2=dequeue();
  88. q3=dequeue();
  89. printf("%d %d %d\n",q1,q2,q3);
  90.  
  91. freeL();
  92. return 0;
  93. }
Success #stdin #stdout 0s 5288KB
stdin
1 2 3
1 2 3
stdout
3 2 1
1 2 3