2730 - 删除小于x的元素
时间限制 : 1 秒
内存限制 : 128 MB
设有一个正整数序列组成的有序单链表,现在输入一个x值,然后,删除单链表中小于x的值。
题目输入
第一行:输入一组整数。
第二行:输入x值。
题目输出
第一行,输出删除前的单链表。
第二行:输出删除后的单链表。
输入/输出样例
输入格式
1 2 3 4 5 6 3
输出格式
1 2 3 4 5 6 3 4 5 6
C语言解答
#include <stdio.h> #define MAX 100 #define size 6 typedef int elemtype; typedef struct seqlist { elemtype elem[MAX]; int last; }Seqlist; int main() { struct seqlist l; int i,x,k=0; l.last=size; for(i=0;i<l.last;i++) scanf("%d",&l.elem[i]); scanf("%d",&x); for(i=0;i<l.last;i++) { if(i==l.last-1) printf("%d\n",l.elem[i]); else printf("%d ",l.elem[i]); } for(i=0;i<l.last;i++) { if(l.elem[i]>=x) { if(i==l.last-1) printf("%d\n",l.elem[i]); else printf("%d ",l.elem[i]); } } }
C++解答
#include <stdio.h> #include <stdlib.h> typedef int ElemType; typedef struct Node { ElemType data; struct Node * next; }Node,*LinkList; void CreateFromTail(LinkList L) { int i; Node * s,*r; r=L; for(i=0;i<6;i++) { s=(Node *)malloc(sizeof(Node)); scanf("%d",&s->data); s->next=r->next; r->next=s; r=s; } r->next=NULL; } void Del(LinkList L,ElemType e) { Node *s,*r; s=L; while(s->next!=NULL) { if(s->next->data<e) { r=s->next; s->next=s->next->next; free(r); } else s=s->next; } } void display(LinkList L) { Node *c; c=L->next; while(c->next!=NULL) { printf("%d ",c->data); c=c->next; } printf("%d",c->data); printf("\n"); } int main() { LinkList L; int e; L=(Node *)malloc(sizeof(Node)); L->next=NULL; CreateFromTail( L); scanf("%d",&e); display( L); Del( L, e); display( L); return 0; }