创建字符类型单链表L,其元素依次为FaBRuaRYTHRee设计一个函数SplitLink(LinkNode *L,LinkNode *L1,LinkNode *L2) 将L中的大写字母拆分到L1,小写字母拆分到L2,请给出完整的C代码
时间: 2024-03-26 14:41:10 浏览: 58
单链表_链表_线性结构_数据结构与算法
好的,下面是完整的C代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
char data;
struct Node *next;
} LinkNode;
void SplitLink(LinkNode *L, LinkNode *L1, LinkNode *L2) {
LinkNode *p = L->next;
LinkNode *p1 = L1;
LinkNode *p2 = L2;
while (p != NULL) {
if (p->data >= 'A' && p->data <= 'Z') {
p1->next = p;
p1 = p1->next;
} else if (p->data >= 'a' && p->data <= 'z') {
p2->next = p;
p2 = p2->next;
}
p = p->next;
}
p1->next = NULL;
p2->next = NULL;
}
void PrintLink(LinkNode *L) {
LinkNode *p = L->next;
while (p != NULL) {
printf("%c ", p->data);
p = p->next;
}
printf("\n");
}
int main() {
char str[] = "FaBRuaRYTHRee";
LinkNode *L = (LinkNode *) malloc(sizeof(LinkNode));
L->next = NULL;
LinkNode *p = L;
for (int i = 0; str[i] != '\0'; i++) {
LinkNode *node = (LinkNode *) malloc(sizeof(LinkNode));
node->data = str[i];
node->next = NULL;
p->next = node;
p = p->next;
}
LinkNode *L1 = (LinkNode *) malloc(sizeof(LinkNode));
L1->next = NULL;
LinkNode *L2 = (LinkNode *) malloc(sizeof(LinkNode));
L2->next = NULL;
SplitLink(L, L1, L2);
printf("L1: ");
PrintLink(L1);
printf("L2: ");
PrintLink(L2);
return 0;
}
```
代码的主要思路是遍历原链表,将大写字母拆分到L1,小写字母拆分到L2。最后输出结果。
阅读全文