/*
//第一种方法。按照题目要求
#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node *next;
}LNode;
LNode *h;
void CreatList(int n)
{
h = (LNode*)malloc(sizeof(LNode));
h->next = NULL;
LNode *q,*p = h; //p用以指向最后一个元素
int data;
while(--n>=0) //采尾插法创建链表 ,有头节点
{
q = (LNode*)malloc(sizeof(LNode));
scanf("%d",&data);
q->data = data;
q->next = NULL; //尾部至空
p->next = q; //接到尾部
p = p->next;
}
}
void Destroy()
{
LNode *p = h;
while(p!=NULL)
{
p = p->next;
free(h);
h = p;
}
}
void Del(int n,int min,int max)
{
LNode *p = h,*q;
while( p->next!=NULL)
{
if (p->next->data >= min && p->next->data <=max) //符合条件,删除后后面往前移
{
q = p->next;
p->next = q->next;
free(q);
}
else p = p->next; //不符合,指针向后移动
}
}
void Dis()
{
int first = 1;
LNode *p = h;
while(p->next!=NULL)
{
if(first==1)first = 0;
else printf(" ");
printf("%d",p->next->data);
p = p->next;
}
printf("\n");
}
int main()
{
int n,max,min,t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d",&n,&min,&max);
CreatList(n);
Del(n,min,max);
Dis();
Destroy();
}
return 0;
}
*/
//第二种方法
#include<stdio.h>
#include<string.h>
#define N 1000
int a[N];
bool vis[N];
int main()
{
int n,max,min,t,i;
scanf("%d",&t);
while(t--)
{
memset(vis,0,sizeof(vis));
scanf("%d%d%d",&n,&min,&max);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
if (a[i]>=min && a[i]<=max)
vis[i] = true;
int first = 1;
for(i=0;i<n;i++)
{
if (!vis[i])
{
if (!first)printf(" ");
else first = 0;
printf("%d",a[i]);
}
}
printf("\n");
}
return 0;
}
BCL-1339:链表基础练习题(1)
最新推荐文章于 2021-05-19 09:10:26 发布