将线性表L拆分成两个线性表LA、LB,要求线性表LA中的数据元素为奇数,LB中的数据元素为偶数。函数名:Divide()
时间: 2024-05-05 09:17:50 浏览: 87
好的,这是一个关于线性表的问题。可以使用遍历线性表的方法,将奇数和偶数分别存储到两个新的线性表中,最后返回这两个线性表。以下是一个可能的解决方案:
```
void Divide(List L, List& LA, List& LB) {
InitList(LA); // 初始化线性表LA
InitList(LB); // 初始化线性表LB
for (int i = 1; i <= L.length; i++) {
int data = L.data[i];
if (data % 2 == 0) {
ListInsert(LB, LB.length + 1, data); // 将偶数插入LB
} else {
ListInsert(LA, LA.length + 1, data); // 将奇数插入LA
}
}
}
```
希望这个解决方案对你有帮助。还有什么其他问题吗?我可以继续为您服务。
相关问题
将线性表L拆分成两线性表LA,LB,要求线性表LA中的数据元素为奇数,LB中的数据元素为偶数,分别用顺序表和单链表两种方法表示,写出不同的处理函数
用顺序表表示的处理函数:
```c
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
// 将线性表L拆分成两线性表LA,LB,要求线性表LA中的数据元素为奇数,LB中的数据元素为偶数
void splitList(SqList L, SqList *LA, SqList *LB) {
int i, j, k;
j = k = 0;
for (i = 0; i < L.length; i++) {
if (L.data[i] % 2 == 1) {
LA->data[j++] = L.data[i];
} else {
LB->data[k++] = L.data[i];
}
}
LA->length = j;
LB->length = k;
}
```
用单链表表示的处理函数:
```c
typedef struct LNode {
int data;
struct LNode *next;
} LNode, *LinkList;
// 将线性表L拆分成两线性表LA,LB,要求线性表LA中的数据元素为奇数,LB中的数据元素为偶数
void splitList(LinkList L, LinkList *LA, LinkList *LB) {
LNode *p = L->next;
LNode *q;
LNode *r;
(*LA) = (LinkList)malloc(sizeof(LNode));
(*LB) = (LinkList)malloc(sizeof(LNode));
q = (*LA);
r = (*LB);
while (p != NULL) {
if (p->data % 2 == 1) {
q->next = p;
q = p;
} else {
r->next = p;
r = p;
}
p = p->next;
}
q->next = NULL;
r->next = NULL;
}
```
注意,以上代码只是将线性表L拆分成两线性表LA,LB,而没有对LA,LB进行初始化,所以在调用以上函数之前,需要先手动初始化LA和LB。
假设利用两个线性表la和lb分别表示两个集合a和b(即:线性表中的数据元素即为集合中的成员),现要求一个新的集合a=a∪b。这就要求对线性表做如下操作:扩大线性表la,将存在于线性表lb中而不存在于线
题目中给出两个线性表 LA 和 LB,分别表示两个集合 A 和 B(即:线性表中的元素为集合中的元素)。现要求对线性表 LA 做如下操作:
扩大线性表 LA,将其存储在线性表 LB 中而非 LA 中。
为了求得新的集合 A= A ∪ B。这就要求对线性表 LA 做如下操作:扩大线性表 LA,并将其存储在线性表 LB 中,而不是 LA。