/*
* Description
初始化顺序表(顺序表中元素为整数),里面的元素是1,2,3,然后通过scanf读取一个元素(加入插入的是6),插入到第二个位置,打印输出顺序表,每个元素占3个空格,格式为1 6 2 3,探后scanf读取一个整型数,是删除的位置(加入输入为1),然后输出顺序表6 2 3,假如输入的位置不合法,输出false字符串。提醒,Language一定要选为C++
*Input
第一次输入插入的元素值,第二次输入删除的位置
*Output
假如插入的元素为6,那么输出为1 6 2 3
假如删除的位置为1,那么输出为6 2 3
*/
#define _CRT_SECURE_NO_WARNINGS//必须要放在第一行
#include <stdio.h>
#define MaxSize 50
typedef struct {
int data[MaxSize]; //定义数组
int length; //顺序表长度
}SqList;
//初始化顺序表
void InitList(SqList &L) {
for (int i = 0; i < MaxSize; i++)
L.data[i] = 0;
L.length = 0;
int x;
scanf("%d\n",&x);
int i = 0;
while (x != -2) {
L.data[i] = x;
i++;
L.length++;
scanf("%d\n", &x);
}
}
//判断值是否合法
bool TF(SqList& L,int i) {
if (i<1 || i>L.length + 1)
return false;
if (L.length >= MaxSize)
return false;
return true;
}
//插入元素
void ListInsert(SqList& L, int i, int e) {
if (TF(L, e)) {
for (int j = L.length; j >= e; j--)
L.data[j] = L.data[j - 1];
L.data[e - 1] = i;
L.length++;
printf("插入成功");
}
}
//删除元素
void ListDelete(SqList& L, int i) {
if (TF(L, i)) {
for (int j = i - 1; j < L.length; j++)
L.data[j] = L.data[j + 1];
L.data[L.length - 1] = 0;
L.length--;
printf("删除成功");
}
}
int main() {
//初始化
SqList L;
InitList(L);
//插入操作
int a, b;
scanf("%d %d", &a, &b);
ListInsert(L, a, b);
printf("当前链表遍历为:\n");
for (int i = 0; i < L.length; i++) {
printf("%3d",L.data[i]);
}
//删除操作
int c;
scanf("%d",&c);
ListDelete(L, c);
printf("当前链表遍历为:\n");
for (int i = 0; i < L.length; i++) {
printf("%3d", L.data[i]);
}
return 0;
}
王道中级day3作业---顺序表
于 2022-04-24 15:11:41 首次发布
该博客介绍了一个C++程序,用于初始化并操作顺序表。首先,程序会创建一个包含1,2,3的顺序表,并插入一个新元素(如6),然后根据用户输入的位置删除元素。如果输入位置非法,程序将输出"false"。博客重点讨论了顺序表的插入和删除功能及其实现细节。
摘要由CSDN通过智能技术生成