【苏嵌实训-嵌入式 linux C 第 6天】
2020-07-14 06:33
288 查看
项目名称 | 【苏嵌实训-嵌入式 linux C 第 6天】 |
---|---|
今日进度以及任务 | 嵌入式C实战详解1 - 单链表 |
本日任务完成情况 | 作业及笔记见表格下方。 |
本日开发中出现的问题汇总 | 无 |
本日未解决问题 | 无 |
本日开发收获 | 学习了带头结点和不带头结点的单链表的创建、插入(头插入、尾插入、中间插入)、删除、查找 |
其他 | 无 |
作业:
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; }
相关文章推荐
- 2020-07-02苏嵌嵌入式Linux实训 第一天
- 苏嵌实训-嵌入式 linux C 第6 天
- 苏嵌实训-嵌入式 linux C 第5 天
- 苏嵌实训-嵌入式 linux C 第4 天
- 苏嵌实训-嵌入式 linux C 第 6 天
- 苏嵌实训-嵌入式 linux C 第3 天
- 苏嵌实训-嵌入式 linux C 第 5 天
- 苏嵌实训-嵌入式 linux C 第2天
- C语言基础知识-苏嵌实训 嵌入式 linux C 第 3 天
- 苏嵌实训-嵌入式 linux C 第 4 天
- 苏嵌实训-嵌入式 linux C 第1 天
- 苏嵌嵌入式linux实训 第2天
- 苏嵌实训-嵌入式 linux C 第 3 天
- 苏嵌实训-嵌入式 linux C 第1 天
- 苏嵌嵌入式linux实训 第一天
- 苏嵌实训-嵌入式 linux C 第 2 天
- 苏嵌实训-嵌入式 LinuxC 第 6天
- 苏嵌实训-嵌入式 linux C 第 2 天
- 苏嵌实训-嵌入式 linuxC 第 1 天
- 苏嵌实训-嵌入式linux C 第 7 天