求C语言大神帮忙解决这道题。急急急!
建立一个学生链表,包括学号、姓名、性别、年龄,当输入学号为-1时停止建立,输入年龄,当节点所包含的年龄等于此年龄时删除此节点并显示,每个介电泳英文逗号链接,每条信息换行输...
建立一个学生链表,包括学号、姓名、性别、年龄,当输入学号为-1时停止建立,输入年龄,当节点所包含的年龄等于此年龄时删除此节点并显示,每个介电泳英文逗号链接,每条信息换行输入。
展开
3个回答
展开全部
#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int num;
char name[100];
char sex[20];
int age;
struct node *next;
}Node, *List;
void input(List l)
{
Node *p, *cur;
cur = l;
while(1)
{
p = (Node*)malloc(sizeof(Node));
scanf("%d",&p->num);
if(p->num == -1)
{
free(p);
break;
}
scanf("%s%s%d",p->name, p->sex, &p->age);
cur ->next = p;
cur = p;
cur->next = NULL;
}
}
void show(List l)
{
Node *p = l->next;
while(p)
{
printf("%d %s %s %d,",p->num, p->name, p->sex, p->age);
p = p->next;
}
}
void del(List l, int n)
{
Node *last;
Node *p;
last = l;
p = l->next;
while(p)
{
if(p->age == n)
{
last ->next = p->next;
free(p);
p = last->next;
}
else
{
last = p;
p = p->next;
}
}
}
void destroy(List l)
{
if(l == NULL) return;
destroy(l->next);
free(l);
}
int main()
{
Node h = {};
int age;
List l =&h;
input(l);
show(l);
scanf("%d",&age);
del(l, age);
show(l);
destroy(l->next);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询