使用c语言编写代码,要求如下:1.以输入整形数据为主,输入后按“?”结束输入。 2.程序所能表达到的功能为:实现顺序表的创建、查找、插入、删除等功能。
时间: 2024-02-17 18:01:31 浏览: 76
编写完整的程序实现顺序的建立、查找、插入、删除等基本操作
好的,您想要实现顺序表的创建、查找、插入、删除等功能。我可以给您提供一份简单的C语言代码,实现这些功能。请参考下面的代码:
```c
#include <stdio.h>
#define MAXSIZE 100 //定义顺序表的最大长度为100
typedef struct{
int data[MAXSIZE]; //顺序表中的数据
int length; //当前顺序表的长度
} SqList; //定义顺序表类型SqList
//初始化顺序表
void InitList(SqList *L){
L->length = 0; //将顺序表的长度初始化为0
}
//在顺序表L的第i个位置插入元素e
int ListInsert(SqList *L, int i, int e){
if (i < 1 || i > L->length + 1) //判断i的范围是否有效
return 0;
if (L->length >= MAXSIZE) //判断顺序表是否已满
return 0;
for (int j = L->length; j >= i; j--) //将第i个位置及后面的元素后移
L->data[j] = L->data[j-1];
L->data[i-1] = e; //将元素e插入到第i个位置上
L->length++; //顺序表长度加1
return 1;
}
//删除顺序表L中第i个位置的元素,并将被删除的元素存储到e中
int ListDelete(SqList *L, int i, int *e){
if (i < 1 || i > L->length) //判断i的范围是否有效
return 0;
*e = L->data[i-1]; //将被删除的元素存储到e中
for (int j = i; j < L->length; j++) //将第i个位置及后面的元素前移
L->data[j-1] = L->data[j];
L->length--; //顺序表长度减1
return 1;
}
//查找顺序表L中第一个值为e的元素,并返回其位置
int LocateElem(SqList *L, int e){
for (int i = 0; i < L->length; i++){
if (L->data[i] == e)
return i+1;
}
return 0;
}
int main(){
int input, pos, elem;
SqList L;
InitList(&L);
printf("请输入整型数据,以\"?\"结束输入:");
while (scanf("%d", &input) != 0){
ListInsert(&L, L.length+1, input); //将输入的数据插入到顺序表末尾
if (getchar() == '?') //如果输入的字符为“?”,则结束输入
break;
}
printf("顺序表中的数据为:");
for (int i = 0; i < L.length; i++)
printf("%d ", L.data[i]); //输出顺序表中的数据
printf("\n请输入要查找的元素:");
scanf("%d", &elem);
pos = LocateElem(&L, elem); //查找元素elem在顺序表中的位置
if (pos == 0)
printf("顺序表中没有该元素!\n");
else
printf("元素%d在顺序表中的位置是%d\n", elem, pos);
printf("请输入要插入的元素及其插入位置,以空格分隔:");
scanf("%d %d", &elem, &pos);
if (ListInsert(&L, pos, elem))
printf("插入成功!\n");
else
printf("插入失败!\n");
printf("插入元素后的顺序表为:");
for (int i = 0; i < L.length; i++)
printf("%d ", L.data[i]); //输出插入元素后的顺序表中的数据
printf("\n请输入要删除的元素位置:");
scanf("%d", &pos);
if (ListDelete(&L, pos, &elem))
printf("删除成功!被删除的元素是%d\n", elem);
else
printf("删除失败!\n");
printf("删除元素后的顺序表为:");
for (int i = 0; i < L.length; i++)
printf("%d ", L.data[i]); //输出删除元素后的顺序表中的数据
printf("\n");
return 0;
}
```
在这个程序中,我们使用了一个结构体SqList来定义顺序表的类型。在主函数中,我们首先调用InitList函数初始化顺序表,然后使用ListInsert函数将输入的数据插入到顺序表中,使用LocateElem函数查找指定元素在顺序表中的位置,使用ListInsert函数将指定元素插入到指定位置,使用ListDelete函数删除指定位置上的元素。最后,我们输出修改后的顺序表中的数据。
希望这份代码能够帮助到您,如果您有任何问题或需要进一步的帮助,请随时联系我。
阅读全文