链表——删除指定元素

来源:互联网 发布:静脉注射空气 知乎 编辑:程序博客网 时间:2024/06/05 22:37

链表-删除指定元素

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

23 1 21 2 35 2 11 1 1 1 1

Example Output

31 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;       }    }}


0 0
原创粉丝点击