#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
int data;
struct Node*pNext;
}NODE,*PNODE;
void sort_list(PNODE pHead);
PNODE create_list();
void traverse_list(PNODE);
void delete_list(PNODE, int min,int max);
int main()
{
int T;
scanf("%d",&T);
int q;
int type;
int min,max;
int i;
while(T--)
{
PNODE pHead = create_list();
if(pHead->pNext!=NULL)
{
scanf("%d",&q);
for(i=0;i<q;i++)
{
scanf("%d",&type);
switch(type)
{
case 1:
traverse_list(pHead);
break;
case 2:
scanf("%d%d",&min,&max);
delete_list(pHead,min,max);
break;
default:
break;
}
}
}
}
return 0;
}
PNODE create_list()
{
int i,j,t,len;
int val;
PNODE pHead = (PNODE)malloc(sizeof(NODE));
PNODE pTail = pHead;
pTail->pNext = NULL;
scanf("%d",&len);
for(i=0;i<len;i++)
{
PNODE pNew = (PNODE)malloc(sizeof(NODE));
scanf("%d",&val);
pNew->data = val;
pTail->pNext = pNew;
pNew ->pNext = NULL;
pTail = pNew;
}
sort_list(pHead);
return pHead;
}
void traverse_list(PNODE pHead)
{
PNODE p = pHead->pNext;
if(p==NULL)
{
return;
}
while(p!=NULL)
{
printf("%d ", p->data);
p = p->pNext;
}
printf("\n");
return;
}
void delete_list(PNODE pHead,int min,int max)
{
PNODE p,q,s;
p = pHead;
if(p->pNext==NULL)
{
return;
}
while(p->pNext&&p->pNext->data<=min)
p = p->pNext;
q = p->pNext;
while(q && q->data<max)
{
s = q;
q = q->pNext;
free(s);
s = NULL;
}
p->pNext = q;
return;
}
void sort_list(PNODE pHead)
{
int i,j,t;
PNODE p = pHead->pNext;
int len = 0;
while (NULL != p)
{
++len;
p = p->pNext;
}
PNODE q;
for(i=0,p = pHead->pNext;i<len-1;++i,p = p->pNext)
{
for(j=i+1,q=p->pNext;j<len;++j,q=q->pNext)
{
if(p->data>q->data)
{
t = p->data;
p->data = q->data;
q->data = t;
}
}
}
return;
}
printf("%d ", p->data);
改为
printf("%d", p->data);
p = p->pNext;
if(p!=NULL)
printf(" ");
原来是多输出空格了 好气啊