[C++] 数据结构与算法----1.12 按位序奇偶分割单链表,利用原内存空间,保持原次序 →→→→→进入此内容的聊天室

来自 , 2019-05-03, 写在 C++, 查看 140 次.
URL http://www.code666.cn/view/89885ff2
  1. //***********************************
  2. //功能:按元素位序的奇偶分割单链表,利用原结点的内存空间,保持原相对次序
  3. //日期:2017年10月10日
  4. //作者:Ryan2019
  5. //***********************************
  6. #include <iostream>
  7. using namespace std;
  8. typedef int LElemType;
  9. typedef struct LNode
  10. {
  11.     LElemType data;
  12.         LNode *next;
  13. }* LList;
  14. void ListCreate(LList &L,int n,LElemType a[]);//创建链表
  15. void Listshow(LList &L);//显示链表
  16. void Divide(LList &L,LList &A,LList &B);//分割单链表
  17.  
  18. int main()
  19. {
  20.         LList A,B,L; int m=6;
  21.         LElemType a[6]={1,2,3,4,5,6};
  22.         for(int i=0;i<=m;i++)
  23.         {
  24.         ListCreate(L,i,a);     
  25.         cout<<"原链表为:";Listshow(L);
  26.         Divide(L,A,B);
  27.         cout<<"分割后的单链表A为:";   Listshow(A);   
  28.         cout<<"分割后的单链表B为:";   Listshow(B);
  29.         }
  30.         return 0;
  31. }
  32.  
  33. void ListCreate(LList &L,int n,LElemType a[])
  34. {
  35.         LList p;        int i;
  36.         L=new LNode; L->next=NULL;
  37.         for(i=n-1;i>=0;i--)
  38.         {
  39.                 p=new LNode;
  40.                 p->data=a[i];
  41.                 p->next=L->next;
  42.                 L->next=p;
  43.         }
  44. }
  45. void Listshow(LList &L)
  46. {
  47.         LList p;
  48.         for(p=L->next;p;p=p->next)
  49.         {
  50.                 cout<<p->data<<" ";
  51.         }
  52.         cout<<endl;
  53. }
  54. void Divide(LList &L,LList &A,LList &B)
  55. {
  56.         B=new LNode;
  57.         if(!L->next || !L->next->next)
  58.         {
  59.                 A=L;
  60.                 B->next=NULL;
  61.                 return;
  62.         }
  63.         LList p,q,r;
  64.         p=L->next;
  65.         q=p->next;
  66.         B->next=q;
  67.         while(p && q && p->next && q->next)
  68.         {
  69.                 p->next=q->next;
  70.                 r=q;
  71.                 p=p->next;
  72.                 q=p->next;
  73.                 r->next=q;
  74.         }
  75.         p->next=NULL;
  76.         if(!q)
  77.         {              
  78.                 r->next=NULL;
  79.         }
  80.         A=L;
  81.  
  82. }

回复 "数据结构与算法----1.12 按位序奇偶分割单链表,利用原内存空间,保持原次序"

这儿你可以回复上面这条便签

captcha