将线性表L拆分成两线性表LA,LB,要求线性表LA中的数据元素为奇数,LB中的数据元素为偶数,分别用顺序表和单链表两种方法表示,写出不同的处理函数
时间: 2024-05-07 11:18:52 浏览: 189
将一个整数线性表拆分成奇数和偶数线性表
5星 · 资源好评率100%
用顺序表表示的处理函数:
```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。
阅读全文