fork download
  1. #include<iostream>
  2. using namespace std;
  3. struct node{
  4. int data;
  5. node *next;
  6. };
  7. int count=0;
  8. void insert_tail(node **pointerToStart,node **pointerToTail,int n){
  9. node *temp=new node;
  10. temp->data=n;
  11. if(*pointerToStart==NULL){
  12. (*temp).next=*pointerToStart;
  13. *pointerToStart=temp;
  14. *pointerToTail=temp;
  15. count++;
  16. }
  17. else{
  18. (*pointerToTail)->next=temp;
  19. temp->next=NULL;
  20. *pointerToTail=temp;
  21. count++;
  22. }
  23.  
  24. }
  25.  
  26. void print_list(node* start){
  27. node* temp=start;
  28. while(temp!=NULL){
  29. cout<<temp->data<<"->";
  30. temp=temp->next;
  31. }
  32. cout<<"NULL";
  33. }
  34. node *reverse(node **pointerToNode){
  35. node* head;
  36.  
  37. if((*pointerToNode)->next==NULL){
  38. head=*pointerToNode;
  39. return head;
  40. }
  41. node *q=(*pointerToNode)->next;
  42. node *p=*pointerToNode;
  43. head=reverse(&q);
  44. node *temp=p->next;
  45. temp->next=p;
  46. p->next=NULL;
  47. return head;
  48. }
  49. node* merge(node* start1,node* start2){
  50.  
  51. if(start1==NULL){
  52. return start2;
  53. }
  54. if(start2==NULL){
  55. return start1;
  56. }
  57.  
  58. if(start1->data<start2->data){
  59. start1->next=merge(start1->next,start2);
  60. return start1;
  61. }
  62. else{
  63. start2->next=merge(start1,start2->next);
  64. return start2;
  65. }
  66.  
  67. }
  68.  
  69. main(){
  70. node *start=NULL, *tail=NULL,*start1=NULL,*start2=NULL,*tail1=NULL,*tail2=NULL;
  71. for(int i=1;i<=1;i++){
  72. insert_tail(&start1,&tail1,i);
  73. }
  74. print_list(start1);
  75.  
  76. cout<<"\n";
  77. for(int i=2;i<=2;i++){
  78. insert_tail(&start2,&tail2,i);
  79. }
  80. print_list(start2);
  81. cout<<"\n";
  82. start=merge(start1,start2);
  83. print_list(start);
  84.  
  85. }
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
1->NULL
2->NULL
1->2->NULL