一个单链表中有三种类型数据类型,数字,字母和其他类型,拆分为三个链表,用C语言表示
时间: 2024-10-27 10:02:19 浏览: 6
在C语言中,可以创建三个独立的链表分别存储数字、字母和其他类型的数据。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义节点结构体
typedef struct Node {
union {
int num; // 存储数字
char letter; // 存储字母
void* other_type; // 存储其他类型的指针
} data;
struct Node* next;
} ListNode;
// 创建链表
void* createListByType(char type) {
void* list = malloc(sizeof(ListNode));
if (type == 'n') { // 数字列表
list->data.num = 0; // 初始化数据
list->next = NULL;
} else if (type == 'a') { // 字母列表
list->data.letter = '\0'; // 初始化数据
list->next = NULL;
} else { // 其他类型列表
list->data.other_type = NULL;
list->next = NULL;
}
return list;
}
// 添加元素到对应链表
void addToList(void* list, union {
int num;
char letter;
void* other_type;
}) element, type) {
ListNode* newNode = (ListNode*)malloc(sizeof(ListNode));
newNode->data = element;
newNode->next = ((ListNode*)list)->next;
((ListNode*)list)->next = newNode;
}
// 示例演示如何操作
int main() {
ListNode* digitList = createListByType('n');
ListNode* alphaList = createListByType('a');
ListNode* otherList = createListByType('o'); // 假设其他类型
// 添加元素到每个链表
addToList(digitList, 5);
addToList(alphaList, 'A');
addToList(otherList, (void*)malloc(4)); // 假设添加了一个整数地址作为"其他类型"
return 0;
}
```
这个程序首先定义了包含不同类型数据的节点结构,然后创建了三个链表,并提供了一个`addToList`函数来向每个链表中添加对应的元素。请注意,实际应用中需要根据需求调整链表管理的部分。
阅读全文