2. (算法设计题) 编写一个算法函数void Sprit(SeqList L1,SeqList *L2,SeqList *L3),将顺序表L1中的数据进行分类,奇数存放到存到顺序表L2中,偶数存到顺序表L3中,编写main()函数进行测试
时间: 2024-09-29 15:07:49 浏览: 35
这是一个简单的算法设计题目,需要利用循环遍历顺序表L1,并判断每个元素是否为奇数。如果是奇数,则将其插入到L2中;如果为偶数,则插入到L3中。以下是使用C语言的一个基本示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义顺序表结构体
typedef struct SeqList {
int data;
struct SeqList* next;
} SeqList;
// 插入元素到顺序表末尾
void insert(SeqList** list, int value) {
SeqList* newNode = (SeqList*)malloc(sizeof(SeqList));
newNode->data = value;
newNode->next = NULL;
if (*list == NULL) {
*list = newNode;
} else {
SeqList* temp = *list;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = newNode;
}
}
// 判断并分类顺序表元素
void sortOddEven(SeqList* L1, SeqList** L2, SeqList** L3) {
SeqList* temp = L1;
while (temp != NULL) {
if (temp->data % 2 == 0) {
insert(L3, temp->data);
} else {
insert(L2, temp->data);
}
temp = temp->next;
}
}
// 测试main函数
int main() {
SeqList* L1 = NULL; // 初始化空的顺序表
SeqList* L2 = NULL;
SeqList* L3 = NULL;
// 假设这里已填充了L1的数据
// 添加数据到L1...
sortOddEven(L1, &L2, &L3); // 分类操作
printf("偶数在L3: ");
displaySeqList(L3); // 打印L3中的元素
printf("\n奇数在L2: ");
displaySeqList(L2); // 打印L2中的元素
return 0;
}
// 辅助函数:打印顺序表
void displaySeqList(SeqList* list) {
SeqList* temp = list;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
printf("\n");
}
```
这个程序首先初始化三个顺序表L1、L2和L3,然后通过`sortOddEven`函数将L1中的元素分类到两个新的列表中。最后,在main函数中展示了结果。
阅读全文