您的位置:首页 > 其它

链表——删除指定元素

2017-03-02 20:13 381 查看


链表-删除指定元素

Time Limit: 1000MS Memory Limit: 65536KB

Submit Statistic Discuss


Problem Description

       对于一个给定的线性表,要求删除线性表内的大于等于 min 且小于等于 max 的数,并输出删除后的线性表

要求:必须使用链表做,否则不计成绩!


Input

        输入的第一行为一个正整数 T,表示有 T 组测试数据。
        每组测试数据的第一行为三个整数n、min、max,表示有 n 个数据,删除的范围为[min, max].第二行为 n 个整数代表初始的 n 个数据。


Output

         输出删除数据后的线性表,如果线性表为空则输出-1


Example Input

2
3 1 2
1 2 3
5 2 1
1 1 1 1 1



Example Output

3
1 1 1 1 1



Hint

 


Author

gaoyongxin

#include<iostream>
#include<stdio.h>
using namespace std;
struct Lnode
{
int data;
Lnode * next;
};
Lnode * del(Lnode * head,int a, int b)
{
Lnode * tail;
tail=head;
while(head->next)
{
if(head->next->data>=a && head->next->data<=b)
{
head->next=head->next->next;
}
else
head=head->next;
}
return tail;

}
int main()
{
int t;
int n,min,max;
cin>>t;
while(t--)
{
cin>>n>>min>>max;
Lnode * head, * tail , * liste;
head=new Lnode;
head->data=0;
head->next=NULL;
tail=head;
while(n--)
{
int a;
cin>>a;
liste=new Lnode;
liste->data=a;
liste->next=NULL;
tail->next=liste;
tail=liste;
}
head=del(head,min,max);
if(head->next==NULL)
{
cout<<"-1"<<endl;
}
else
{
head=head->next;
while(head->next)
{
cout<<head->data<<" ";
head=head->next;
}
cout<<head->data<<endl;
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: