使用C语言,创建一个顺序表,从键盘输入各元素的值,输出所有元素,查找表内是否有25和28,在顺序表第六个位置插入9,输出所有元素,删除第五个元素,输出顺序表所有元素
时间: 2024-10-12 08:10:19 浏览: 33
数据结构 实验大纲 实验例题
在C语言中,你可以使用数组来实现简单的顺序表。以下是逐步操作的示例:
```c
#include <stdio.h>
#define MAX_SIZE 10 // 定义序列表的最大容量
// 顺序表结构体
typedef struct {
int data[MAX_SIZE]; // 存储元素的数组
int size; // 当前元素的数量
} List;
// 初始化顺序表
void init_list(List *lst) {
lst->size = 0;
}
// 从键盘输入并添加元素到列表
void input_and_add(List *lst) {
int element;
while (lst->size < MAX_SIZE) {
printf("Enter an integer (or -1 to stop): ");
scanf("%d", &element);
if (element == -1)
break;
lst->data[lst->size++] = element;
}
}
// 输出列表中的所有元素
void print_list(const List *lst) {
for (int i = 0; i < lst->size; i++) {
printf("%d ", lst->data[i]);
}
printf("\n");
}
// 查找元素并打印结果
void search(List *lst, int target) {
for (int i = 0; i < lst->size; i++) {
if (lst->data[i] == target) {
printf("Element %d found at position %d\n", target, i+1); // 注意索引是从0开始的
return;
}
}
printf("Element not found.\n");
}
// 在指定位置插入元素
void insert_at_position(List *lst, int index, int value) {
if (index >= 0 && index < lst->size) {
memmove(lst->data + index + 1, lst->data + index, sizeof(int) * (lst->size - index));
lst->data[index] = value;
lst->size++;
} else {
printf("Invalid insertion position.\n");
}
}
// 删除元素
void delete_element(List *lst, int index) {
if (index >= 0 && index < lst->size - 1) {
memmove(lst->data + index, lst->data + index + 1, sizeof(int) * (lst->size - index - 1));
lst->size--;
} else {
printf("Invalid deletion position.\n");
}
}
int main() {
List myList;
init_list(&myList);
// 输入元素并初始化列表
input_and_add(&myList);
// 输出初始列表
print_list(&myList);
// 搜索元素
search(&myList, 25);
search(&myList, 28);
// 插入元素
insert_at_position(&myList, 5, 9);
print_list(&myList);
// 删除元素
delete_element(&myList, 4); // 注意索引是从0开始的
print_list(&myList);
return 0;
}
```
当你运行这个程序,它会提示你输入一系列整数,并完成搜索、插入和删除的操作。注意,上述代码没有处理溢出情况,实际项目中需要添加适当的错误检查。此外,如果你想要在第六个位置插入,由于C数组的索引从0开始,你需要传入5作为插入位置。
阅读全文