一、代码实现
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
// 定义顺序表结构体
typedef struct {
int data[MAX_SIZE]; // 存储数据的数组
int length; // 当前长度
} SeqList;
// 初始化顺序表
void initList(SeqList* list) {
list->length = 0;
}
int insertElement(SeqList* list, int index, int element) {
if (index < 0 || index > list->length) {
printf("索引无效,无法插入元素。\n");
return 0;
}
if (list->length >= MAX_SIZE) {
printf("顺序表已满,无法插入元素。\n");
return 0;
}
for (int i = list->length; i > index; i--) {
list->data[i] = list->data[i - 1];
}
list->data[index] = element;
list->length++;
return 1;
}
// 添加元素
int addElement(SeqList* list, int element) {
if (list->length >= MAX_SIZE) {
printf("顺序表已满,无法添加元素。\n");
return 0;
}
list->data[list->length++] = element;
return 1;
}
// 删除元素
int deleteElement(SeqList* list, int index) {
if (index < 0 || index >= list->length) {
printf("索引无效,无法删除元素。\n");
return 0;
}
for (int i = index; i < list->length - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->length--;
return 1;
}
// 修改元素
int updateElement(SeqList* list, int index, int newElement) {
if (index < 0 || index >= list->length) {
printf("索引无效,无法修改元素。\n");
return 0;
}
list->data[index] = newElement;
return 1;
}
// 查找元素
int findElement(SeqList* list, int element) {
for (int i = 0; i < list->length; i++) {
if (list->data[i] == element) {
return i;
}
}
return -1;
}
// 打印顺序表
void printList(SeqList* list) {
printf("[ ");
for (int i = 0; i < list->length; i++) {
printf("%d ", list->data[i]);
}
printf("]\n");
}
// 主函数
int main() {
SeqList myList; // 定义顺序表变量
initList(&myList); // 初始化顺序表
/* 初始化空线性表 */
int n = 0;
int flag = 1;//判断用户选择数是否合法
while (flag)
{
printf("请输入线性表的一到十内的目标长度\n");
scanf_s("%d",&n);
if (n >= 1 && n <= 10)
{
flag = 0;
}
}
int dight = 0;
for (int i = 0; i < n; i++)
{
printf("请输入第%d个元素的值:\n", i + 1);
scanf("%d", &dight);
addElement(&myList, dight);
}
printList(&myList); // 打印顺序表
int flags = 1;
while (flags)
{
int choice = 1;
int sth = 0;
int index = 0;
printf("------------------------------------------------------------------------------\n");
printf("请选择你想要的执行的操作:1.查找元素 2.修改元素 3.删除元素 4.添加元素 0.退出\n");
scanf("%d", &choice);
switch (choice)
{
case 0:
flags = 0;
break;
case 1:
printf("输入你想查找的元素,将得到索引值\n");
scanf("%d", &sth);
int index = findElement(&myList, sth); // 查找元素,返回索引值
printf("元素2的索引是:%d\n", index);
break;
case 2:
printf("输入你想修改的元素索引值\n");
scanf("%d", &index);
printf("输入你想修改元素的值\n");
scanf("%d", &sth);
updateElement(&myList, index, sth); // 修改元素
printList(&myList); // 打印顺序表
break;
case 3:
printf("输入你想删除的元素的索引值\n");
scanf("%d", &index);
deleteElement(&myList, index); // 删除元素
printList(&myList); // 打印顺序表
break;
case 4:
printf("输入你想插入的元素索引值\n");
scanf("%d", &index);
printf("输入你想插入元素的值\n");
scanf("%d", &sth);
insertElement(&myList, index, sth); // 修改元素
printList(&myList); // 打印顺序表
default:
printf("ERROR");
break;
}
}
return 0;
}
二、运行结果
![](https://img-blog.csdnimg.cn/844227bf82f245509d323eebcc7f3295.png)