MNNUOJ 9009删除k个数

编程入门 行业动态 更新时间:2024-10-04 23:26:40

MNNUOJ 9009删除k<a href=https://www.elefans.com/category/jswz/34/1769671.html style=个数"/>

MNNUOJ 9009删除k个数

 Problem Description

有一顺序表L,请删除L中第i个元素起的连续k个元素。删除成功后,若顺序表非空,则输出删除后的顺序表;若顺序表为空,则不输出任何信息;若位置i有误或无法找到连续k个元素,则输出“data error”。

 Input

有多组数据,每组第一行分别表示表长n(0<n<=20)、位置i和k值(k>=0);第二行表示顺序表的各元素。

 Output

删除成功后,若顺序表非空,则输出删除后的顺序表,每两个元素之间用一个空格分隔;若顺序表为空,则不输出任何信息;若位置i有误或无法找到连续k个元素,则输出“data error”。

 Sample Input

5 2 3
1 2 3 4 5

 Sample Output

1 5

 Hints

 
不管数据是否有效,都要完整的读入表的数据。

方法一:顺序表

#include<iostream>
#include<stdio.h>
const int MAX=21;
using namespace std;
class SeqList {
public :int length;int array[MAX];bool flag;
public:SeqList() {length=0;}SeqList(int* a,int n) {for(int i=0; i<n; i++) {array[i]=a[i];}length=n;}void Print() {for(int i=0; i<length; i++) {if(i)cout<<" ";cout<<array[i];}cout<<endl;}void Delete(int index,int k) {for(int loop=0; loop<k; loop++) {for(int i=index-1; i<length-1; i++) {array[i]=array[i+1];}length--;}}};
int main() {int n,index,k;while(cin>>n>>index>>k) {int* a=new int[n];for(int i=0; i<n; i++)cin>>a[i];SeqList list(a,n);if(list.length==0)continue;else if(index<=0||index>n||(index+k-1)>n) {cout<<"data error"<<endl;}else{
list.Delete(index,k);list.Print();}delete a;}return 0;
}

 

方法二:单链表

#include<iostream>
#include<stdio.h>
const int MAX=21;
using namespace std;
class List {
public:struct node {int data;node* next;};node* head;
public:List() {head=new node;head->next=NULL;}void Creat(int n) {node* r=head;for(int i=0; i<n; i++) {int num;cin>>num;node* s=new node;s->data=num;r->next=s;r=s;}r->next=NULL;}void Print() {node* p=head->next;if(p) {while(p->next) {cout<<p->data<<" ";p=p->next;}cout<<p->data<<endl;}}void Delete(int index,int k){int count=0;node* p=head;while(p->next&&++count<index){p=p->next;}while(p->next&&count++<k+index){node* s=p->next;p->next=s->next;delete s;}}
};
int main() {int n,index,k;while(cin>>n>>index>>k){List list;list.Creat(n);if(index<=0||index>n||(k+index-1)>n){cout<<"data error"<<endl;}else {list.Delete(index,k);list.Print();}}
return 0;
}

 

更多推荐

MNNUOJ 9009删除k个数

本文发布于:2024-02-13 14:05:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1758900.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:个数   MNNUOJ

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!