数据结构:链表应用:第6关:链表的分解

任务描述

本关任务:利用单链表A表示一个非零整数序列,把A分解为两个具有相同结构的链表B和C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点。要求空间复杂度为O(1),链表B和C均利用链表A的结点空间。

编程要求

输入

多组数据,每组数据有两行,第一行为链表A的长度n,第二行为链表A的n个元素(元素之间用空格分隔)。当n=0时输入结束。

输出

对于每组数据分别输出两行,分别对应链表B和C的元素,每个数据之间用空格分隔。

测试说明

平台会对你编写的代码进行测试:

测试输入: 7 3 -6 1 -2 4 -3 8 8 2 5 3 -1 -2 2 6 -1 0

预期输出: -6 -2 -3 3 1 4 8 -1 -2 -1 2 5 3 2 6

来源

BJFUOJ


开始你的任务吧,祝你成功!

#include <iostream>
using namespace std;
typedef struct LNode
{
    int data;
    struct LNode *next;
}LNode,*LinkList;
void CreateList_R(LinkList &L,int n)
{//后插法创建单链表
    L=new LNode;
    L->next=NULL;
    LinkList r=L;
    for(int i=0;i<n;i++)
    {
        LinkList p=new LNode;
        cin>>p->data;
        p->next=NULL;
        r->next=p;
        r=p;
    }
}
void PrintList(LinkList &L)
{//打印依次输出链表中的数据
    L=L->next;
    while(L){
        if(L->next!=NULL) cout<<L->data<<" ";
        else cout<<L->data;
        L=L->next;
    }
    cout<<endl;
}
void Decompose(LinkList &LA,LinkList &LB,LinkList &LC)
{//链表的分解
/**************begin************/
  //情报:LA为链表,结点值为正或为负;LC为LA中>0,LB为<0;LB和LC利用LA的结点;主函数中LinkList LA,LB,LC;
  //思路:1.遍历LA  2.定义LB和LC的头结点,判断LA每个结点正负,根据结果让LB和LC指向这些结点(定头结,断正负,连结点)

//定头结
  LB=new LNode;LB->next=NULL;
  LC=new LNode;LC->next=NULL;
  LinkList pa,pb,pc;
  pa=LA->next;
  pb=LB;
  pc=LC;
  while(pa)//LA不为空时,循环继续
  {
      //断正负
      if(pa->data>0)
      {
          //连结点
          pc->next=pa;
          pc=pc->next;
          pa=pa->next;
          pc->next=NULL;/******把LA原来接着的,后面的结点断掉******/
      }
      else
      {
          pb->next=pa;
          pb=pb->next;
          pa=pa->next;
          pb->next=NULL;
      }
  }


  
    /**************end************/
}
int main()
{
    int n;
    while(cin>>n)
    {
        if(n==0) break;
        LinkList LA,LB,LC;
        CreateList_R(LA,n);
        Decompose(LA,LB,LC);
        PrintList(LB);
        PrintList(LC);
    }
    return 0;
}

相关推荐

  1. 数据结构应用6分解

    2023-12-06 15:26:07       60 阅读
  2. 数据结构应用8逆转

    2023-12-06 15:26:07       56 阅读
  3. 数据结构9:删除中满足区间值结点

    2023-12-06 15:26:07       67 阅读
  4. 数据结构

    2023-12-06 15:26:07       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-06 15:26:07       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-06 15:26:07       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-06 15:26:07       87 阅读
  4. Python语言-面向对象

    2023-12-06 15:26:07       96 阅读

热门阅读

  1. [数据结构]C++递归算法作业

    2023-12-06 15:26:07       56 阅读
  2. 前端如何中断请求 ( axios、原生 ajax、fetch)

    2023-12-06 15:26:07       59 阅读
  3. 微信小程序显示二维码?

    2023-12-06 15:26:07       60 阅读
  4. pytorch 多卡并行训练

    2023-12-06 15:26:07       60 阅读
  5. Numpy实践_排序和搜索和计数

    2023-12-06 15:26:07       48 阅读