有没有做请帖的网站,建设项目自主验收网站,德国 网站建设,基于那种语言开发网页任务描述
本关任务#xff1a;利用单链表A表示一个非零整数序列#xff0c;把A分解为两个具有相同结构的链表B和C#xff0c;其中B表的结点为A表中值小于零的结点#xff0c;而C表的结点为A表中值大于零的结点。要求空间复杂度为O(1)#xff0c;链表B和C均利用链表A的结点…任务描述
本关任务利用单链表A表示一个非零整数序列把A分解为两个具有相同结构的链表B和C其中B表的结点为A表中值小于零的结点而C表的结点为A表中值大于零的结点。要求空间复杂度为O(1)链表B和C均利用链表A的结点空间。
编程要求
输入
多组数据每组数据有两行第一行为链表A的长度n第二行为链表A的n个元素元素之间用空格分隔。当n0时输入结束。
输出
对于每组数据分别输出两行分别对应链表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)
{//后插法创建单链表Lnew LNode;L-nextNULL;LinkList rL;for(int i0;in;i){LinkList pnew LNode;cinp-data;p-nextNULL;r-nextp;rp;}
}
void PrintList(LinkList L)
{//打印依次输出链表中的数据LL-next;while(L){if(L-next!NULL) coutL-data ;else coutL-data;LL-next;}coutendl;
}
void Decompose(LinkList LA,LinkList LB,LinkList LC)
{//链表的分解
/**************begin************///情报LA为链表结点值为正或为负LC为LA中LB为LB和LC利用LA的结点主函数中LinkList LA,LB,LC;//思路1.遍历LA 2.定义LB和LC的头结点判断LA每个结点正负根据结果让LB和LC指向这些结点定头结断正负连结点//定头结LBnew LNode;LB-nextNULL;LCnew LNode;LC-nextNULL;LinkList pa,pb,pc;paLA-next;pbLB;pcLC;while(pa)//LA不为空时循环继续{//断正负if(pa-data0){//连结点pc-nextpa;pcpc-next;papa-next;pc-nextNULL;/******把LA原来接着的后面的结点断掉******/}else{pb-nextpa;pbpb-next;papa-next;pb-nextNULL;}}/**************end************/
}
int main()
{int n;while(cinn){if(n0) break;LinkList LA,LB,LC;CreateList_R(LA,n);Decompose(LA,LB,LC);PrintList(LB);PrintList(LC);}return 0;
}