链表-删除指定元素
Time Limit: 1000MS
Memory Limit: 65536KB
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;
}
}
}