1277 - C语言11.13
时间限制 : 1 秒
内存限制 : 32 MB
建立一个链表,每个节点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的节点所包含的年龄等于这个年龄,则将所有符合要求的节点删去。
题目输入
第一行有一个整数n,表示链表中的节点个数。保证n不超过100。
之后的n行每行有4个用空格隔开的部分,分别为学号(正整数)、姓名(长度不超过20且不包含空格的字符串)、性别(字符m或f)、年龄(正整数)。
最后一行有一个整数age,表示需要删除的节点年龄。
题目输出
首先输出链表最终剩下的节点个数k。
在接下来的k行,每行输出4个用空格隔开的部分,分别为学号、姓名、性别和年龄,与输入格式相同。
请注意行尾输出换行。
输入/输出样例
输入格式
5 101 Aaa m 25 102 Bbb f 26 103 Ccc m 26 104 Ddd f 24 105 Eee m 25 26
输出格式
3 101 Aaa m 25 104 Ddd f 24 105 Eee m 25
C语言解答
#include <stdio.h> typedef struct student{ int id; char name[20]; char sex[2]; int age; int flag; }student; int main(){ int n,i,tmp,cnt; student st[100]; // freopen("1.txt","r",stdin); while (scanf("%d",&n)==1) { for (i=0;i<n;i++) { scanf("%d %s %s %d",&(st[i].id),st[i].name,st[i].sex,&(st[i].age)); st[i].flag=1; } scanf("%d",&tmp); cnt=n; for (i=0;i<n;i++) { if (st[i].age==tmp) { st[i].flag=0; cnt--; } } printf("%d\n",cnt); for (i=0;i<n;i++) { if (st[i].flag) { printf("%d %s %s %d\n",st[i].id,st[i].name,st[i].sex,st[i].age); } } } // fclose(stdin); return 0; }
C++解答
#include <stdio.h> #include <stdlib.h> struct node { int num; char name[21], sex; int age; struct node * next; }; int main() { struct node *head, *tail, *p, *pa; int n, i, del_age; scanf("%d", &n); /* 读入链表中的n个人的信息 */ head = tail = NULL; for (i = 0;i < n;i++) { p = (struct node *)malloc(sizeof(struct node)); scanf("%d %s %c %d", &p->num, p->name, &p->sex, &p->age); if (head == NULL) { head = tail = p; } else { tail->next = p; tail = p; } } tail->next = NULL; scanf("%d", &del_age); /* 遍历链表的每一个节点,判断节点的年龄是否与要删除的相等 */ pa = p = head; while (pa != NULL) { if (pa->age == del_age) { if (pa == head) { head = pa->next; free(pa); pa = p = head; } else { p->next = pa->next; free(pa); pa = p->next; } n--; } else { p = pa; pa = pa->next; } } /* 将处理后的链表进行输出 */ printf("%d\n", n); p = head; while (p != NULL) { printf("%d %s %c %d\n", p->num, p->name, p->sex, p->age); p = p->next; } return 0; }
Java解答
import java.util.LinkedList; import java.util.List; import java.util.Scanner; public class Main { private static Scanner s = new Scanner(System.in) ; public static void main(String[] args) { int n = s.nextInt() ; List<Student> list = new LinkedList<Student>() ; List<Student> temp = new LinkedList<Student>() ; if (n<=100) { for (int i = 0; i < n; i++) { int num = s.nextInt() ; String name = s.next() ; String sex = s.next() ; int age = s.nextInt() ; Student s = new Student(num, name, sex, age) ; list.add(s) ; } int a = s.nextInt() ; for (Student student : list) { temp.add(student) ; } for (Student stu : temp) { if(stu.age==a){ list.remove(stu) ; } } System.out.println(list.size()); for (Student student : list) { System.out.println(student.num+" "+student.name+" "+student.sex+" "+student.age); } } } } class Student{ int num ; String name ; String sex ; int age ; public Student(int num, String name, String sex, int age) { this.num = num; this.name = name; this.sex = sex; this.age = age; } }