fork(2) download
  1. #include <iostream>
  2. #include <stack>
  3. //using namespace std;
  4.  
  5. struct node
  6. {
  7. int data;
  8. node * next;
  9. };
  10.  
  11. node * head;
  12.  
  13. void reverse()
  14. {
  15. int c=1;
  16. node *current,*prev,*temp;
  17. current=head;
  18. prev=NULL;
  19. std::stack<int>s;
  20. while(current!=NULL)
  21. {
  22. c++;
  23. s.push(current->data);
  24. current=current->next;
  25. }
  26.  
  27. int mid=0;
  28. if((c%2)==0)
  29. {
  30. mid=c/2;
  31. }
  32. else
  33. {
  34. mid=(c+1)/2;
  35. }
  36. current=head;
  37. int lastFordward = (c%2)?mid-1:mid;
  38. for(int i=0;i<lastFordward;i++)
  39. {
  40. std::cout<<current->data<<"\t";
  41. current=current->next;
  42. }
  43.  
  44. for(int i=mid;i>1;i--)
  45. {
  46. std::cout<<s.top()<<"\t";
  47. s.pop();
  48. }
  49. std::cout << '\n';
  50. }
  51.  
  52. int main() {
  53. // your code goes here
  54. node n1,n2,n3,n4,n5,n6;
  55. n1.next=&n2;
  56. n1.data=1;
  57. n2.next=&n3;
  58. n2.data=2;
  59. n3.next=&n4;
  60. n3.data=3;
  61. n4.next=&n5;
  62. n4.data=4;
  63. n5.next=&n6;
  64. n5.data=5;
  65. n6.next=0;
  66. n6.data=6;
  67. head=&n1;
  68. reverse();
  69. return 0;
  70. }
Success #stdin #stdout 0s 15232KB
stdin
Standard input is empty
stdout
1	2	3	6	5	4