删除链表中满足区间值的结点
删除链表中满足区间值的结点
描述
利用单链表表示一个递增的整数序列,删除链表中值大于等于mink且小于等于maxk的所有元素(mink和maxk是给定的两个参数,其值可以和表中的元素相同,也可以不同)。
输入
多组数据,每组数据有两行,第一行为链表的长度n,第二行为链表的n个元素(元素之间用空格分隔),第三行为给定的mink和maxk(用空格分隔)。当n=0时输入结束。
输出
对于每组数据分别输出一行,依次输出删除元素后的链表元素,元素之间用空格分隔。
输入样例 1
5 1 2 3 4 5 2 4 6 2 4 6 8 10 12 3 5 0
输出样例 1
1 5 2 6 8 10 12
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<math.h> #define MAXSIZE 1000 #define OVERFLOW -2 #define OK 1 #define ERROR 0 typedef struct LNode{ int num; struct LNode *next; }LNode,* LinkList; void Inist_List(LinkList& L){ L=new LNode; L->next=NULL; } void Zuhe(LinkList& L1){ LinkList H1=L1; int m,n; while(1){ scanf("%d",&m); if(m==0) break; for(int i=0;i<m;i++){ LinkList p= new LNode; scanf("%d",&p->num); p->next=NULL; L1->next=p; L1=p; } L1=H1; int mink,maxk; scanf("%d%d",&mink,&maxk); LinkList t=L1; while(t->next){ if(t->next->num>=mink&&t->next->num<=maxk){ LinkList q=t->next; t->next=t->next->next; delete(q); } else t=t->next; } LinkList b=L1; while(b->next->next) { b=b->next; printf("%d ",b->num); } printf("%d\n",b->next->num); } } int main(){ LinkList L1; Inist_List(L1); Zuhe(L1); return 0; }

浙公网安备 33010602011771号