问题描述
创建一个元素为整数的顺序表,并对顺序表中指定位置的元素进行修改。
输入描述
输入包括四行,第一行为一个整数n(不超过20),表示顺序表的长度;
第二行为n个由空格分隔的整数;
第三行为一个整数i,代表顺序表中需要修改元素的位置;
第四行一个整数e,表示顺序表第i个位置元素修改为e。若位置i不合理,则顺序表不做修改。
输出描述
输出共三行,第一行输出创建后的顺序表中元素;
第二行,若修改元素的位置合理,则输出“修改的位置有效!”,否则输出“修改的位置有误!”;
第三行输出修改后的顺序表中元素。输出的每个元素之间用一个空格隔开。
样例输入
输入样例1: 10 11 8 21 6 21 12 13 95 35 26 4 66 输入样例2: 8 7 14 21 28 35 42 49 56 10 8
样例输出
输出样例1: 创建后的顺序表为:11 8 21 6 21 12 13 95 35 26 修改的位置有效! 修改后的顺序表为:11 8 21 66 21 12 13 95 35 26 输出样例2: 创建后的顺序表为:7 14 21 28 35 42 49 56 修改的位置有误! 修改后的顺序表为:7 14 21 28 35 42 49 56
完整代码
#include<stdio.h>
#define LISTSIZE 100 //定义线性表最大长度
typedef int DataType; //指定顺序表中数据元素的类型为整型
typedef struct
{
int data[LISTSIZE]; //数组存放元素
int length; //线性表实际长度
}SeqList;
static void ListDelete(SeqList& L, int i, int num)
{
printf("创建后的顺序表为:");
for (int i = 0; i < L.length; i++)
{
printf("%d ", L.data[i]); //输出创建后的顺序表中元素
}
printf("\n");
if (i<1 || i>L.length + 1)
printf("修改的位置有误!\n");
else
{
printf("修改的位置有效!\n");
L.data[i-1] = num;
}
printf("修改后的顺序表为:");
for (int j = 0; j < L.length; j++)
printf("%d ", L.data[j]);
return;
}
int main()
{
SeqList L;
scanf("%d", &L.length); //顺序表的长度
for (int i = 0; i < L.length; i++)
{
scanf("%d", &L.data[i]); //存放元素
}
int e = 0;
int num = 0;
scanf("%d%d", &e,&num); //顺序表中需要修改元素的位置以及修改后的数
ListDelete(L, e, num);
return 0;
}