求C语言大神帮忙解决这道题。急急急!

建立一个学生链表,包括学号、姓名、性别、年龄,当输入学号为-1时停止建立,输入年龄,当节点所包含的年龄等于此年龄时删除此节点并显示,每个介电泳英文逗号链接,每条信息换行输... 建立一个学生链表,包括学号、姓名、性别、年龄,当输入学号为-1时停止建立,输入年龄,当节点所包含的年龄等于此年龄时删除此节点并显示,每个介电泳英文逗号链接,每条信息换行输入。 展开
 我来答
风若远去何人留
2015-07-18 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450104
专业C/C++软件开发

向TA提问 私信TA
展开全部
#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;
}
更多追问追答
追问

这是怎么回事

追答
你编译器不支持这样初始化?那就手动好了
改成
Node h;
h->next = NULL;
其他的不动。
匿名用户
2015-07-18
展开全部
是只能用链表实现是吗?你着急要吗,我下午有空的话帮你写下哈,或者晚上。
更多追问追答
追问
谢谢大神
追答
不要黑,不是大神,只是上学期学过半学期,你不是特别急哈,嗯那我下午或者晚上弄完这个项目后写一写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我Q511031494
2015-07-18 · 超过10用户采纳过TA的回答
知道答主
回答量:86
采纳率:0%
帮助的人:28.9万
展开全部
30元
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式