上机作业:用顺序结构(数组)来存放26个英文字母组成的线性表(a,b,c,…,z),写出在顺序结构上生成、查找、插入、删除和显示该表的C语言程序。 课本:p67 第三题
时间: 2024-09-09 18:04:54 浏览: 178
首先,我们需要定义一个数组来存储26个英文字母。然后,我们将实现几个基本操作,包括生成线性表、查找字母、插入字母、删除字母和显示线性表。以下是C语言程序的代码示例:
```c
#include <stdio.h>
#define MAX_SIZE 26
// 生成线性表
void createList(char list[], char str[], int size) {
for (int i = 0; i < size; ++i) {
list[i] = str[i];
}
}
// 查找字母
int findChar(char list[], char ch) {
for (int i = 0; i < MAX_SIZE; ++i) {
if (list[i] == ch) {
return i;
}
}
return -1; // 如果未找到,返回-1
}
// 插入字母
int insertChar(char list[], int *size, char ch, int pos) {
if (pos < 0 || pos > *size || *size == MAX_SIZE) {
return 0; // 插入位置不合法或表已满
}
for (int i = *size; i > pos; --i) {
list[i] = list[i - 1];
}
list[pos] = ch;
(*size)++;
return 1;
}
// 删除字母
int deleteChar(char list[], int *size, char ch) {
int pos = findChar(list, ch);
if (pos == -1) {
return 0; // 未找到要删除的字母
}
for (int i = pos; i < *size - 1; ++i) {
list[i] = list[i + 1];
}
(*size)--;
return 1;
}
// 显示线性表
void displayList(char list[], int size) {
for (int i = 0; i < size; ++i) {
printf("%c ", list[i]);
}
printf("\n");
}
int main() {
char alphabet[MAX_SIZE];
int size = 0;
// 假设初始列表为空
// 生成线性表
createList(alphabet, "abcdefghijklmnopqrstuvwxyz", 26);
size = 26;
// 显示线性表
printf("Initial list: ");
displayList(alphabet, size);
// 查找字母
char ch = 'k';
int index = findChar(alphabet, ch);
printf("The position of '%c' is: %d\n", ch, index);
// 插入字母
ch = 'z';
int position = 5;
if (insertChar(alphabet, &size, ch, position)) {
printf("After inserting '%c' at position %d: ", ch, position);
displayList(alphabet, size);
} else {
printf("Insertion failed.\n");
}
// 删除字母
ch = 'x';
if (deleteChar(alphabet, &size, ch)) {
printf("After deleting '%c': ", ch);
displayList(alphabet, size);
} else {
printf("Deletion failed.\n");
}
return 0;
}
```
这段代码中,我们定义了一个字符数组`alphabet`来存储26个英文字母,并实现了几个函数来操作这个数组。`main`函数中,我们演示了如何使用这些函数来生成、查找、插入、删除和显示线性表。
阅读全文