关于C语言的链表的题目

建立一个链表,每一个结点包括:学号,姓名,性别,年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去,否则提示用户输入学号,姓名,性别等信息,并插入... 建立一个链表,每一个结点包括:学号,姓名,性别,年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去,否则提示用户输入学号,姓名,性别等信息,并插入该结点。
请各位高手帮帮忙吧。。!!!~~
不管是插入结点后,还是删除一点结点后,都能够打印出所有的数据,表明已添加或删除!!~~
展开
 我来答
player98
2010-01-15 · 超过22用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int print_link(struct linklist *head); //声明打印链表的函数

struct linklist //链表结点
{
int id;
char name[10];
char sex;
int age;
struct linklist *next;
}*head;

int main()
{
int age_temp=0;
struct linklist *temp,*del_temp,*add_temp;
head = (struct linklist *) malloc ( sizeof(struct linklist)); //开辟首结点
temp=head;

head->id=1; //给首结点赋值,首结点不能删除
head->age=10;
memset(head->name, 0 , sizeof(head->name));
strcpy(head->name, "aaa");
head->sex = 'f';
head->next = NULL;

while (1) //当输入AGE为0时退出程序
{
printf ("input age:(end with 0)\n"); //输入年龄
scanf("%d",&age_temp);
if (age_temp == 0)
break;
temp = head;

while( temp->next != NULL)
{
if (temp->next->age == age_temp) //如果链表里有与输入AGE相等的,删除该结点
{
del_temp = temp->next;
temp->next = del_temp->next;
free(del_temp);
temp = head;
printf("delete a node\n");
break;
}
temp= temp->next;
}
if (temp->next == NULL) //如果没有,输入信息,增加结点
{
add_temp = (struct linklist *) malloc ( sizeof(struct linklist));
memset(add_temp->name, 0, sizeof(add_temp->name));
add_temp->next = NULL;

printf ("no data in linklist,add a new node\n");
add_temp->age = age_temp;
printf ("input id:\n");
scanf ("%d",&add_temp->id);
printf ("input name:\n");
scanf ("%s",add_temp->name);
getchar();
printf ("male or female:(f/m)\n");
scanf ("%c",&add_temp->sex);

temp->next = add_temp;
}
print_link(head);
}

return 0;
}

int print_link(struct linklist *head) //打印链表的函数
{
struct linklist *temp=head;
int i=1;
while(temp!= NULL)
{
printf ("linklist node %d:\n",i);
printf ("id=%4d | name=%10s | sex=%4c | age=%4d\n",temp->id,\
temp->name,temp->sex,temp->age);
temp = temp->next;
i++;
}
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式