游客 Signup | Login
中文 | En

1277 - C语言11.13

建立一个链表,每个节点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的节点所包含的年龄等于这个年龄,则将所有符合要求的节点删去。

Input

第一行有一个整数n,表示链表中的节点个数。保证n不超过100。

之后的n行每行有4个用空格隔开的部分,分别为学号(正整数)、姓名(长度不超过20且不包含空格的字符串)、性别(字符m或f)、年龄(正整数)。
最后一行有一个整数age,表示需要删除的节点年龄。

Output

首先输出链表最终剩下的节点个数k。

在接下来的k行,每行输出4个用空格隔开的部分,分别为学号、姓名、性别和年龄,与输入格式相同。
请注意行尾输出换行。

Examples

Input

5
101 Aaa m 25
102 Bbb f 26
103 Ccc m 26
104 Ddd f 24
105 Eee m 25
26

Output

3
101 Aaa m 25
104 Ddd f 24
105 Eee m 25

Solution 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;
}

Solution 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;
}

Time Limit 1 second
Memory Limit 32 MB
Discuss Stats
上一题 下一题