帮帮忙:顺序表的删除c++

编程实现把顺序表中从i个元素开始的k个元素删除(数据类型为整型)。

输入格式:第一行输入元素个数n,第二行输入n个数,空格分隔,第三行输入i和k;

输出格式:如果成功删除,则第一行输出Success!第二行输出删除后还剩下的顺序表中的元素;如果删除不成功,第一行输出Failure!第二行输出原顺序表元素。

输入样例:

8
1 4 6 8 9 2 11 15
3 4

输出:

Success!
1 4 11 15

只需要将被删除数据后面的所有数据向前移动k个位置就可以了,然后把顺序表的长度值减去k

代码如下,如有帮助,请帮忙采纳一下,谢谢。

img

#include <iostream>
using namespace std;
#define N 100
struct LinkList 
{
    int arr[N];
    int length;
};

//创建链表
void CreateList(struct LinkList *lst)
{
    int i,n,k;
    lst->length = 0;
    cin >> k;
    for (i=0;i<k;i++)
    {
        cin >> n;
        lst->arr[lst->length] = n;
        lst->length++;
    }
}


//显示列表
void print(struct LinkList *lst)
{
    int i;
    
    for (i=0;i<lst->length;i++)
    {
        if(i<lst->length-1)
            cout <<lst->arr[i]<<" ";
        else
            cout <<lst->arr[i]<<endl;
    }
}


int main()
{
    struct LinkList lst;
    int i,k,j;
    CreateList(&lst);
    cin >> i >> k;
    if(i<1 || i > lst.length || k < 0 || k > lst.length || i+k > lst.length)
        cout << "Failure!";
    
    for(j = i-1;j<lst.length -k;j++)
        lst.arr[j] = lst.arr[j+k];

    lst.length-=k;//长度减k

    cout << "Success!"<<endl;
    print(&lst);
    return 0;
}