请编制c语言程序,利用顺序存储方式实现下列功能:根据键盘输入数据建立一个线性表,并输出该线性表;然后根据屏幕菜单的选择,可以进行数据的插入、删除、查找,并在插入或删除数据后,再输出线性表;最后在屏幕菜单中选择结束按钮,即可结束程序的运行。
时间: 2024-06-10 09:09:02 浏览: 90
线性表的顺序表示和插入、删除、归并C语言代码实现
4星 · 用户满意度95%
这是一个关于编程的问题,我可以回答。下面是一份用C语言编写的程序,可以根据您提供的要求实现线性表的建立、插入、删除和查找功能。
```
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 //线性表的最大长度
typedef struct {
int data[MAXSIZE]; //存储数据的数组
int length; //线性表的长度
} SqList; //定义一个线性表的结构体类型
//初始化线性表
void InitList(SqList *L) {
L->length = 0; //将线性表的长度初始化为0
}
//输出线性表中的数据
void PrintList(SqList L) {
int i;
printf("该线性表的数据为:");
for (i = 0; i < L.length; i++) {
printf("%d ", L.data[i]);
}
printf("\n");
}
//插入数据
int InsertList(SqList *L, int pos, int value) {
int i;
if (pos < 1 || pos > L->length + 1) {
printf("插入位置不合法!\n");
return 0;
}
if (L->length >= MAXSIZE) {
printf("线性表已满,无法插入!\n");
return 0;
}
for (i = L->length; i >= pos; i--) {
L->data[i] = L->data[i - 1]; //将插入位置以及后面的数据依次向后移动
}
L->data[pos - 1] = value; //将新数据插入到指定位置
L->length++; //线性表长度加1
return 1;
}
//删除数据
int DeleteList(SqList *L, int pos) {
int i;
if (pos < 1 || pos > L->length) {
printf("删除位置不合法!\n");
return 0;
}
for (i = pos - 1; i < L->length - 1; i++) {
L->data[i] = L->data[i + 1]; //将删除位置以及后面的数据依次向前移动
}
L->length--; //线性表长度减1
return 1;
}
//查找数据
int SearchList(SqList L, int value) {
int i;
for (i = 0; i < L.length; i++) {
if (L.data[i] == value) {
return i + 1; //返回查找到的位置
}
}
return 0; //未找到数据,返回0
}
//主函数
int main() {
SqList L; //定义一个线性表变量
int choice = 1, pos, value;
InitList(&L); //初始化线性表
printf("请输入线性表的长度:");
scanf("%d", &L.length);
printf("请输入线性表的数据:");
for (int i = 0; i < L.length; i++) {
scanf("%d", &L.data[i]);
}
PrintList(L); //输出线性表中的数据
while (choice) {
printf("请选择操作(1.插入 2.删除 3.查找 0.退出):");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入要插入的位置和数值(用空格隔开):");
scanf("%d %d", &pos, &value);
if (InsertList(&L, pos, value)) {
PrintList(L);
}
break;
case 2:
printf("请输入要删除的位置:");
scanf("%d", &pos);
if (DeleteList(&L, pos)) {
PrintList(L);
}
break;
case 3:
printf("请输入要查找的数值:");
scanf("%d", &value);
pos = SearchList(L, value);
if (pos) {
printf("该数值在线性表中的位置为:%d\n", pos);
} else {
printf("未找到该数值!\n");
}
break;
case 0:
break;
default:
printf("输入有误,请重新输入!\n");
break;
}
}
printf("程序已结束!\n");
return 0;
}
```
希望这个程序能够满足您的需求。
阅读全文