用结构体描述一个字符型的顺序表,创建线性表;在线性表上实现:插入元素、删除元素、查找元素、显示线性表中所有元素等基本操作。
时间: 2024-09-27 20:08:39 浏览: 69
2.线性表子系统.pdf
在C语言中,我们可以使用结构体(struct)来描述一个字符型的顺序表,即数组,因为顺序表就是通过连续内存空间存储数据的。首先,定义一个结构体`CharacterList`,包含一个字符数组`data`和一个整数`size`表示当前元素的数量:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char *data; // 存储字符的数组
int size; // 当前元素的数量
} CharacterList;
```
接下来,我们可以创建一些基本操作函数:
1. **创建线性表**(insertElement):
```c
void createList(CharacterList *list) {
list->data = (char*)malloc(10 * sizeof(char)); // 初始容量
list->size = 0;
}
```
2. **插入元素**(insert):
```c
void insertElement(CharacterList *list, char value) {
if (list->size == list->size - 1) { // 如果已满,扩大一倍
list->data = (char*)realloc(list->data, 2 * list->size * sizeof(char));
}
list->data[list->size] = value;
list->size++;
}
```
3. **删除元素**(delete):
```c
void deleteElement(CharacterList *list, int index) {
if (index >= 0 && index < list->size) {
memmove(&list->data[index], &list->data[index + 1], (list->size - index - 1) * sizeof(char));
list->size--;
} else {
printf("Invalid index.\n");
}
}
```
4. **查找元素**(search):
```c
int searchElement(CharacterList *list, char target) {
for (int i = 0; i < list->size; i++) {
if (list->data[i] == target)
return i;
}
return -1; // 如果未找到,返回-1
}
```
5. **显示线性表内容**(display):
```c
void displayList(CharacterList *list) {
for (int i = 0; i < list->size; i++)
printf("%c ", list->data[i]);
printf("\n");
}
```
阅读全文