`
844604778
  • 浏览: 550952 次
文章分类
社区版块
存档分类
最新评论

不使用额外空间,将 A,B两链表的元素交叉归并

 
阅读更多

设有两个按元素递增有序的单链表A和B,编一程序将A和B表归并成一个新的递增有序的单链表C,不使用额外空间。

  1. #include<iostream>
  2. usingnamespacestd;
  3. structNode{
  4. intm_Data;
  5. Node*m_pNext;
  6. };
  7. Node*mergeLists(Node*pListA,Node*pListB)
  8. {
  9. if(pListA==NULL){
  10. returnpListB;
  11. }
  12. elseif(pListB==NULL){
  13. returnpListA;
  14. }
  15. else{
  16. Node*pHead=NULL;
  17. if(pListA->m_Data<pListB->m_Data){
  18. pHead=pListA;
  19. pListA=pListA->m_pNext;
  20. }
  21. else{
  22. pHead=pListB;
  23. pListB=pListB->m_pNext;
  24. }
  25. Node*pNode=pHead;
  26. while(pListA&&pListB){
  27. if(pListA->m_Data<pListB->m_Data){
  28. pNode->m_pNext=pListA;
  29. pListA=pListA->m_pNext;
  30. }
  31. else{
  32. pNode->m_pNext=pListB;
  33. pListB=pListB->m_pNext;
  34. }
  35. pNode=pNode->m_pNext;
  36. }
  37. if(pListA){
  38. while(pListA){
  39. pNode->m_pNext=pListA;
  40. pListA=pListA->m_pNext;
  41. pNode=pNode->m_pNext;
  42. }
  43. }
  44. elseif(pListB){
  45. while(pListB){
  46. pNode->m_pNext=pListB;
  47. pListB=pListB->m_pNext;
  48. pNode=pNode->m_pNext;
  49. }
  50. }
  51. returnpHead;
  52. }
  53. }
  54. voidprintList(Node*pHead)
  55. {
  56. boolbEmpty=true;
  57. while(pHead){
  58. bEmpty=false;
  59. cout<<pHead->m_Data<<"->";
  60. pHead=pHead->m_pNext;
  61. }
  62. if(!bEmpty){
  63. cout<<"NULL"<<endl;
  64. }
  65. }
  66. intmain()
  67. {
  68. NodenodeA5={4,NULL};
  69. NodenodeA4={4,&nodeA5};
  70. NodenodeA3={3,&nodeA4};
  71. NodenodeA2={1,&nodeA3};
  72. NodenodeA1={1,&nodeA2};
  73. NodenodeA0={0,&nodeA1};
  74. Node*pHeadA=&nodeA0;
  75. NodenodeB5={5,NULL};
  76. NodenodeB4={4,&nodeB5};
  77. NodenodeB3={3,&nodeB4};
  78. NodenodeB2={2,&nodeB3};
  79. NodenodeB1={2,&nodeB2};
  80. NodenodeB0={1,&nodeB1};
  81. Node*pHeadB=&nodeB0;
  82. cout<<"LinkedListA:"<<endl;
  83. printList(pHeadA);
  84. cout<<"LinkedListB:"<<endl;
  85. printList(pHeadA);
  86. Node*pHead=mergeLists(pHeadA,pHeadB);
  87. cout<<"MergedListA+B:"<<endl;
  88. printList(pHeadA);
  89. }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics