函数题:拆分链表
要求实现函数,将数据域值为非0整数的带头结点的单链表La拆分为2个单链表Lb、Lc,要求仅可增加1个头结点作为Lb或Lc的头结点,其中,Lb依序存放原来La中的负数,Lc依序存放原来La中的正数。测试数据保证2个结果链表都不为空。
### 函数接口定义:
c++
void splitList(LinkList &La, LinkList &Lb, LinkList &Lc) ;
其中引用参数 La是待拆分的带头结点的链表,引用参数Lb、Lc是待返回的2个结果链表。链表的头指针为head,结点指针域为next,数据域为data。
### 裁判测试程序样例:
c++
#include<iostream>
using namespace std;
typedef int ElemType;
struct LNode {
ElemType data; // 数据域
LNode* next; // 指针域
};
struct LinkList {
LNode *head; // 头指针(带头结点)
void Create(int n); // 建立含n个结点的单链表
void Traverse(); // 遍历,并输出内容
};
void splitList(LinkList &La, LinkList &Lb, LinkList &Lc) ;
// 创建1个顺序链表,调用拆分函数实现该链表拆分为1个负数链表和1个正数链表,最后分别遍历2个结果链表输出各结点的数据域的值
int main() {
int n;
while(cin>>n) {
LinkList La, Lb, Lc;
La.Create(n);
splitList(La, Lb, Lc);
Lb.Traverse();
Lc.Traverse();
}
return 0;
}
### 输入样例:
in
6 1 -2 4 -5 -7 6
### 输出样例:
out
-2 -5 -7
1 4 6
答案:若无答案欢迎评论
### 函数接口定义:
c++
void splitList(LinkList &La, LinkList &Lb, LinkList &Lc) ;
其中引用参数 La是待拆分的带头结点的链表,引用参数Lb、Lc是待返回的2个结果链表。链表的头指针为head,结点指针域为next,数据域为data。
### 裁判测试程序样例:
c++
#include<iostream>
using namespace std;
typedef int ElemType;
struct LNode {
ElemType data; // 数据域
LNode* next; // 指针域
};
struct LinkList {
LNode *head; // 头指针(带头结点)
void Create(int n); // 建立含n个结点的单链表
void Traverse(); // 遍历,并输出内容
};
void splitList(LinkList &La, LinkList &Lb, LinkList &Lc) ;
// 创建1个顺序链表,调用拆分函数实现该链表拆分为1个负数链表和1个正数链表,最后分别遍历2个结果链表输出各结点的数据域的值
int main() {
int n;
while(cin>>n) {
LinkList La, Lb, Lc;
La.Create(n);
splitList(La, Lb, Lc);
Lb.Traverse();
Lc.Traverse();
}
return 0;
}
### 输入样例:
in
6 1 -2 4 -5 -7 6
### 输出样例:
out
-2 -5 -7
1 4 6
答案:若无答案欢迎评论