用C++建立一个线性表,要求有初始化,插入,删除,查找,销毁这5个基本操作,主函数要用switch函数让用户选择需要的操作
时间: 2024-06-03 17:07:52 浏览: 92
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 线性表的最大长度
typedef struct {
int data[MAXSIZE]; // 存储数据的数组
int length; // 线性表的长度
} List;
// 初始化线性表
void initList(List *list) {
list->length = 0;
}
// 插入元素
int insertList(List *list, int index, int value) {
if (index < 1 || index > list->length + 1) { // 判断插入位置是否合法
return 0;
}
if (list->length >= MAXSIZE) { // 判断线性表是否已满
return 0;
}
for (int i = list->length; i >= index; i--) { // 将插入位置后的元素后移一位
list->data[i] = list->data[i - 1];
}
list->data[index - 1] = value; // 插入新元素
list->length++; // 线性表长度加1
return 1;
}
// 删除元素
int deleteList(List *list, int index) {
if (index < 1 || index > list->length) { // 判断删除位置是否合法
return 0;
}
for (int i = index; i < list->length; i++) { // 将删除位置后的元素前移一位
list->data[i - 1] = list->data[i];
}
list->length--; // 线性表长度减1
return 1;
}
// 查找元素
int searchList(List *list, int value) {
for (int i = 0; i < list->length; i++) {
if (list->data[i] == value) {
return i + 1; // 返回元素在线性表中的位置
}
}
return 0; // 没有找到返回0
}
// 销毁线性表
void destroyList(List *list) {
list->length = 0;
}
// 打印线性表
void printList(List *list) {
for (int i = 0; i < list->length; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
int main() {
List list;
int choice, index, value;
initList(&list); // 初始化线性表
while (1) {
printf("请选择操作:\n");
printf("1. 插入元素\n");
printf("2. 删除元素\n");
printf("3. 查找元素\n");
printf("4. 打印线性表\n");
printf("5. 销毁线性表\n");
printf("0. 退出程序\n");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入插入位置和插入元素的值:\n");
scanf("%d%d", &index, &value);
if (insertList(&list, index, value)) {
printf("插入成功\n");
} else {
printf("插入失败\n");
}
break;
case 2:
printf("请输入删除位置:\n");
scanf("%d", &index);
if (deleteList(&list, index)) {
printf("删除成功\n");
} else {
printf("删除失败\n");
}
break;
case 3:
printf("请输入要查找的元素的值:\n");
scanf("%d", &value);
index = searchList(&list, value);
if (index) {
printf("元素%d在第%d个位置\n", value, index);
} else {
printf("未找到元素%d\n", value);
}
break;
case 4:
printf("线性表:");
printList(&list);
break;
case 5:
destroyList(&list);
printf("销毁线性表成功\n");
break;
case 0:
printf("退出程序\n");
exit(0);
default:
printf("输入错误,请重新输入\n");
break;
}
}
return 0;
}
阅读全文