编程实现把顺序表中从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
代码如下,如有帮助,请帮忙采纳一下,谢谢。
#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;
}