题目:以下链表节点的数据域data是一个字符,请完成如下函数功能: void clearLink(node *head) 其中,head是链表头,该函数需要删除所有数据域不是英文 字母的节点,并且如果节点数据域是大写英文字母, 则修改成对应的小写英文字母,最后返回结果链表的头指针。
时间: 2024-04-14 22:27:15 浏览: 70
下面是函数`clearLink`的实现代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct node {
char data;
struct node* next;
};
struct node* clearLink(struct node* head) {
struct node* curr = head;
struct node* prev = NULL;
while (curr != NULL) {
if (!(curr->data >= 'A' && curr->data <= 'Z') && !(curr->data >= 'a' && curr->data <= 'z')) {
// 如果数据域不是英文字母
struct node* temp = curr;
curr = curr->next;
if (prev == NULL) {
head = curr;
} else {
prev->next = curr;
}
free(temp);
} else if (curr->data >= 'A' && curr->data <= 'Z') {
// 如果数据域是大写英文字母
curr->data += 32; // 将大写字母转换为小写字母
prev = curr;
curr = curr->next;
} else {
prev = curr;
curr = curr->next;
}
}
return head;
}
```
你可以调用这个函数来删除链表中数据域不是英文字母的节点,并将数据域是大写英文字母的节点修改为对应的小写英文字母,最后返回结果链表的头指针。
阅读全文