用单链表结构存放26个英文字母组成的线性表,写出C语言程序
时间: 2024-10-13 07:15:28 浏览: 36
数据结构(C语言版)实验--线性表的应用
在C语言中,我们可以创建一个链表结构来存储26个英文大写字母,每个节点代表一个字母。以下是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
char letter;
struct Node* next;
} LetterNode;
// 创建新节点
LetterNode* createNode(char letter) {
LetterNode* newNode = (LetterNode*)malloc(sizeof(LetterNode));
newNode->letter = letter;
newNode->next = NULL;
return newNode;
}
// 将字母插入链表头部
void insertAtHead(LetterNode** headRef, char letter) {
LetterNode* newNode = createNode(letter);
if (*headRef != NULL) {
newNode->next = *headRef;
}
*headRef = newNode;
}
// 插入排序后的字母表
void sortAndInsert(LetterNode** headRef) {
LetterNode* current = *headRef;
while (current != NULL && current->letter != 'A') {
current = current->next;
}
if (current == NULL || current->letter != 'A') {
insertAtHead(headRef, 'A');
} else {
for (char i = 'B'; i <= 'Z'; ++i) {
if (*headRef != NULL && (*headRef)->letter == i) {
insertAtHead(headRef, i);
}
}
}
}
// 打印链表
void printList(LetterNode* node) {
while (node != NULL) {
printf("%c ", node->letter);
node = node->next;
}
printf("\n");
}
int main() {
LetterNode* head = NULL;
// 添加字母到链表
for (char i = 'A'; i <= 'Z'; ++i) {
insertAtHead(&head, i);
}
// 对链表进行排序并打印
sortAndInsert(&head);
printList(head);
return 0;
}
```
这个程序首先定义了一个`LetterNode`结构体,用于表示链表中的每个字母节点。然后实现了创建节点、插入节点到链表头部以及对链表进行排序的功能。最后,在`main`函数中创建一个空链表,并填充26个字母,然后打印出排序后的链表。
阅读全文