7月10号作业
2020-07-14 06:33
148 查看
1、创建两个学生链表、含有姓名、年龄的信息,一个链表存放男生,一个链表存放女生
2、将上面两个链表合并,按学生的年龄进行排序,合成新的链表
3、将上题中 建立的链表进行反转,实现按年龄的逆序排列
4、在上面的实现的新链表中,给定一个年龄 ,迅速查找和该学生年龄最接近的学生姓名。
#include "stdio.h" #include "stdlib.h" #include "string.h" typedef struct student { char name[20]; int age; struct student *next; }; typedef struct student student; typedef student * Link; void create_link(Link *head) { *head = NULL; } void insert_head_node(Link newnode,Link *head) { newnode->next = *head; *head = newnode; } //初始化链表信息 void init_student(char *a,int age,Link *head) { Link newnode = (Link )malloc(sizeof(student)); strcpy(newnode->name,a); newnode->age = age; insert_head_node(newnode,&(*head)); } //打印链表 void display_link(Link head) { Link temp = head; while(temp != NULL) { printf("name = %s\tage = %d\n",temp->name,temp->age); temp = temp->next; } } //合并链表,并按年龄排序 Link merge(Link head_gril ,Link head_boy) { Link temp_gril = head_gril; Link temp_boy = head_boy; if(temp_gril == NULL){ return temp_boy; } if(temp_boy == NULL){ return temp_gril; } if(temp_gril->age < temp_boy->age){ temp_gril->next = merge(temp_gril->next,temp_boy); return temp_gril; } else{ temp_boy->next = merge(temp_gril,temp_boy->next); return temp_boy; } } //反转链表 Link reverse(Link head) { Link p; Link res = NULL; Link temp = head; while(temp){ p = temp->next; temp->next = res; res = temp; temp = p; } return res; } //查找链表 void search(Link head,int age) { Link temp = head; int age_1; int age_2; while(temp->next != NULL) { if(temp->age >= age && temp->next->age <= age) { age_1 = abs(temp->age - age); age_2 = abs(temp->next->age - age); if(age_1 <= age_2) { printf("name = %s ",temp->name); break; } else { printf("name = %s ",temp->next->name); break; } } temp = temp->next; } } int main(int argc,char *argv[]) { int i = 0; Link head_girl; Link head_boy; Link res = NULL; create_link(&head_girl); create_link(&head_boy); if(NULL == head_girl || NULL == head_boy) { printf("init link success!\n"); } else { printf("init link failed!\n"); } //初始化链表信息 init_student("girl_1",22,&head_girl); init_student("girl_2",18,&head_girl); init_student("girl_3",14,&head_girl); init_student("boy_1",20,&head_boy); init_student("boy_2",16,&head_boy); init_student("boy_3",12,&head_boy); //打印链表 printf("Link_girl:\n"); display_link(head_girl); printf("Link_boy:\n"); display_link(head_boy); printf("\n\n"); //合并链表 res = merge(head_girl,head_boy); printf("Link_merge:\n"); display_link(res); printf("\n\n"); //反转链表 res = reverse(res); printf("Link_reverse:\n"); display_link(res); printf("\n\n"); //查找链表 search(res,20); printf("\n\n"); return 0; }
相关文章推荐
- 软件工程 作业 结对编程(1) Pair Project I - 3D Board Game
- 第三周作业—编写程序
- 课后作业运算符重载
- 第二次Jav作业
- Python-S13作业-day3-之编辑ha.conf配置文件
- 机器学习 1 linear regression 作业(二)
- 第二次作业:支付宝案例分析1
- C语言博客作业--结构体
- 第二次作业-熟悉使用工具
- 深入分析hadoop之YARN原理、架构、作业流程及调度器
- Quartz作业调度
- 关于RSA算法的例子实践(第二周作业)
- 实践一 作业
- 14软件工程第三次作业
- 操作系统课后习题答案(作业题)
- 小白4.18作业
- 第二次作业:微信分析
- SDN第四次上机作业
- deplearning.ai 吴恩达课后作业-测验目录
- GNSS第四周作业