[C++] 数据结构与算法----1.13 对于单链表A,奇后偶前,保持原次序,利用原空间 →→→→→进入此内容的聊天室

来自 , 2020-05-18, 写在 C++, 查看 127 次.
URL http://www.code666.cn/view/71e09b16
  1. //***********************************
  2. //功能:对于单链表A,把位序为奇数的元素放在后半部分,保持原相对次序;位序为偶数的元素放在前半部分,并且反序,保持原相对次序;利用原结点内存空间
  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. bool Divide(LList &L);//反偶数位序的单链表
  17.  
  18. int main()
  19. {
  20.         LList 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);
  27.         cout<<"改变元素次序后的单链表为:";        Listshow(L);   
  28.         }
  29.         return 0;
  30. }
  31.  
  32. void ListCreate(LList &L,int n,LElemType a[])
  33. {
  34.         LList p;        int i;
  35.         L=new LNode; L->next=NULL;
  36.         for(i=n-1;i>=0;i--)
  37.         {
  38.                 p=new LNode;
  39.                 p->data=a[i];
  40.                 p->next=L->next;
  41.                 L->next=p;
  42.         }
  43. }
  44. void Listshow(LList &L)
  45. {
  46.         LList p;
  47.         for(p=L->next;p;p=p->next)
  48.         {
  49.                 cout<<p->data<<" ";
  50.         }
  51.         cout<<endl;
  52. }
  53.  
  54. bool Divide(LList &L)
  55.  {  
  56.         LList p,q,r;
  57.         p = L->next;
  58.         if(!p) return true;
  59.         L->next=NULL;
  60.         r=L;
  61.         while (p)
  62.         {
  63.                 r->next=p;
  64.                 r=p;
  65.                 p=p->next;
  66.                 r->next=NULL;
  67.                 if(!p) break;                          
  68.                 q=p;
  69.                 p=p->next;
  70.                 q->next=L->next;
  71.                 L->next=q;             
  72.         }
  73.         return true;
  74. }
  75.  

回复 "数据结构与算法----1.13 对于单链表A,奇后偶前,保持原次序,利用原空间"

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

captcha