【题目描述】
删除第i位的元素
【输入形式】
元素个数
顺序表元素
要删除的元素序号
【输出形式】
删除后的顺序表
【输入样例】
5
a b c d e
3
【输出样例】
a b d e
#include<iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef char ElemType;//参照所输入的元素来定义其类型
#define MAXSIZE 100
//顺序表的存储结构
typedef struct
{
ElemType* elem; //定义一个char类型的指针变量elem
int length;//顺序表长度
}SqList;//结构体名
//顺序表的初始化
Status InitList(SqList &L)
{
L.elem = new ElemType[MAXSIZE]; //为顺序表分配一个MAXSIZE大小的数组空间
if(!L.elem) return ERROR;
L.length = 0;
return OK;
}
//删除操作
//顺序表 第i位
Status ListDelete(SqList &L, int i)
{
//下标从1开始
//如果被删除的下标不合理,返回ERROR
if(i < 1 || i > L.length) return ERROR;
for(int j = i; j <= L.length; j ++)
//删除该位后,该位之后的元素会前移一位
L.elem[j] = L.elem[j + 1];
-- L.length;//更新删除后的顺序表长度
return OK;
}
//输出
Status Output(SqList &L)
{
for(int i = 1; i <= L.length; i ++)
cout << L.elem[i] << ' ';
return OK;
}
int main()
{
int n;
cin >> n;
SqList L;//初始化顺序表
InitList(L);//调用顺序表的初始化函数
L.length = n;
//输入
for(int i = 1; i <= n; i ++) cin >> L.elem[i];
//删除位
int x;
cin >> x;
//删除操作
//删除顺序表L的第x位元素
ListDelete(L, x);
//输出
Output(L);
return 0;
}