苏嵌实训-嵌入式linux C 第8天
2020-07-14 06:34
253 查看
项目名称 | 苏嵌实训-嵌入式linux C 第8天 |
---|---|
今日进度以及任务 | 今日主要进度是复习单链表,主要任务完成课后习题以及自学数据库内容 |
本日任务完成情况 | 已完成课后习题 |
-本日开发中出现的问题汇总- | –无 |
本日未解决问题 | 无 |
本日开发收获 | 学到了单链表的操作 |
今日习题
题目:1.创建两个学生链表,含有姓名,年龄的信息,一个链表存放男生,一个存放女生。
2.将上面链表合并,按照学生的年龄进行排序,合成新的链表
3.将上题中建立的链表进行反转。实现按年龄逆序排列
4.在上面的实现的新链表中,给定一个年龄,迅速查找和该年龄最接近的学生姓名
1.
#include "stdio.h" #include "stdlib.h" #include "string.h" struct stu { int age; char name[20]; struct stu *next; }; typedef struct stu Stu; typedef Stu *Link; void is_malloc_ok(Link newnode) { if(newnode == NULL) { printf("malloc error"); exit(1); } } void create_node(Link *newnode) { *newnode = (Link)malloc(sizeof(Stu)); is_malloc_ok(*newnode); } void create_link(Link *head) { create_node(head); (*head)->next = NULL; } void insert_link(Link head, Link newnode) { Link temp = NULL; temp = head; while(temp->next != NULL) { temp = temp->next; } temp->next = newnode; newnode->next = NULL; } void insert_infor(Link head, char name[], int age) { Link newnode = NULL; create_node(&newnode); newnode->age = age; strcpy(newnode->name, name); insert_link(head, newnode); } void display_link(Link head) { Link temp = NULL; temp = head->next; if(temp == NULL) { return; } while(temp != NULL) { printf("name: %s age: %d\n",temp->name, temp->age); temp = temp->next; } } int main() { Link head1; Link head2; create_link(&head1); create_link(&head2); insert_infor(head1, "zhangsan", 20); insert_infor(head1, "lisi", 20); insert_infor(head1, "wangwu", 20); insert_infor(head1, "zhaoliu", 20); printf("boys :\n"); display_link(head1); insert_infor(head2, "xiaoli", 18); insert_infor(head2, "xiaohong", 18); insert_infor(head2, "xiaomei", 18); insert_infor(head2, "xiaolian", 18); printf("girls :\n"); display_link(head2); return 0; }
#include "stdio.h" #include "stdlib.h" #include "string.h" struct stu { int age; char name[20]; struct stu *next; }; typedef struct stu Stu; typedef Stu *Link; void is_malloc_ok(Link newnode) { if(newnode == NULL) { printf("malloc error"); exit(1); } } void create_node(Link *newnode) { *newnode = (Link)malloc(sizeof(Stu)); is_malloc_ok(*newnode); } void create_link(Link *head) { create_node(head); (*head)->next = NULL; } void insert_link(Link head, Link newnode) { Link temp = NULL; temp = head; while(temp->next != NULL) { temp = temp->next; } temp->next = newnode; newnode->next = NULL; } void insert_infor(Link head, char name[], int age) { Link newnode = NULL; create_node(&newnode); newnode->age = age; strcpy(newnode->name, name); insert_link(head, newnode); } void display_link(Link head) { Link temp = NULL; temp = head->next; if(temp == NULL) { return; } while(temp != NULL) { printf("name: %s age: %d\n",temp->name, temp->age); temp = temp->next; } } void link(Link head1, Link head2) { Link temp = NULL; temp = head1; if(temp->next == NULL) { temp->next = head2; } while(temp->next != NULL) { temp = temp->next; } temp->next = head2->next; } void rank_age_link(Link head1) { int between; char tmp[20]; Link p = NULL; Link q = NULL; q = head1->next; p = head1->next; while(q->next != NULL) { while(p->next != NULL) { if((p->age) > (p->next->age)) { between = p->age; p->age = p->next->age; p->next->age = between; strcpy(tmp, p->name); strcpy(p->name, p->next->name); strcpy(p->next->name, tmp); } p = p->next; } p = head1->next; q = q->next; } } int main() { Link head1; Link head2; create_link(&head1); create_link(&head2); insert_infor(head1, "zhangsan", 20); insert_infor(head1, "lisi", 20); insert_infor(head1, "wangwu", 20); insert_infor(head1, "zhaoliu", 20); printf("boys are:\n"); display_link(head1); insert_infor(head2, "xiaoli", 18); insert_infor(head2, "xiaohong", 18); insert_infor(head2, "xiaomei", 18); insert_infor(head2, "xiaolian", 18); printf("\ngirls are:\n"); display_link(head2); link(head1,head2); rank_age_link(head1); printf("\nboys and girls are:\n"); display_link(head1); return 0; }
#include "stdio.h" #include "stdlib.h" #include "string.h" struct stu { int age; char name[20]; struct stu *next; }; typedef struct stu Stu; typedef Stu *Link; void is_malloc_ok(Link newnode) { if(newnode == NULL) { printf("malloc error"); exit(1); } } void create_node(Link *newnode) { *newnode = (Link)malloc(sizeof(Stu)); is_malloc_ok(*newnode); } void create_link(Link *head) { create_node(head); (*head)->next = NULL; } void insert_link(Link head, Link newnode) { Link temp = NULL; temp = head; while(temp->next != NULL) { temp = temp->next; } temp->next = newnode; newnode->next = NULL; } void insert_infor(Link head, char name[], int age) { Link newnode = NULL; create_node(&newnode); newnode->age = age; strcpy(newnode->name, name); insert_link(head, newnode); } void display_link(Link head) { Link temp = NULL; temp = head->next; if(temp == NULL) { return; } while(temp != NULL) { printf("name: %s age: %d\n",temp->name, temp->age); temp = temp->next; } } void link(Link head1, Link head2) { Link temp = NULL; temp = head1; if(temp->next == NULL) { temp->next = head2; } while(temp->next != NULL) { temp = temp->next; } temp->next = head2->next; } void rank_age_link(Link head1) { int between; char tmp[20]; Link p = NULL; Link q = NULL; q = head1->next; p = head1->next; while(q->next != NULL) { while(p->next != NULL) { if((p->age) > (p->next->age)) { between = p->age; p->age = p->next->age; p->next->age = between; strcpy(tmp, p->name); strcpy(p->name, p->next->name); strcpy(p->next->name, tmp); } p = p->next; } p = head1->next; q = q->next; } } void reverse_age_link(Link head) { Link p1 = NULL; Link p2 = NULL; Link p3 = NULL; p1 = head->next; if(p1 == NULL) { return; } else { p2 = p1->next; p3 = p2->next; if(p3 == NULL) { p2->next = p1; p1->next = NULL; head->next = p2; } else { p2->next = p1; p1->next = NULL; while(p3 != NULL) { p1 = p2; p2 = p3; p3 = p3->next; p2->next = p1; } head->next = p2; } } } int main() { Link head1; Link head2; create_link(&head1); create_link(&head2); insert_infor(head1, "zhangsan", 20); insert_infor(head1, "lisi", 20); insert_infor(head1, "wangwu", 20); insert_infor(head1, "zhaoliu", 20); printf("boys are:\n"); display_link(head1); insert_infor(head2, "xiaoli", 18); insert_infor(head2, "xiaohong", 18); insert_infor(head2, "xiaomei", 18); insert_infor(head2, "xiaolian", 18); printf("\ngirls are:\n"); display_link(head2); link(head1,head2); rank_age_link(head1); printf("\nboys and girls are:\n"); display_link(head1); reverse_age_link(head1); printf("\nthe reversed list is:\n"); display_link(head1); return 0; }
#include "stdio.h" #include "stdlib.h" #include "string.h" #include "math.h" struct stu { int age; char name[20]; struct stu * next; struct stu * prior; }; typedef struct stu Stu; typedef struct stu * Link; void is_malloc_ok(Link newnode) { if(newnode == NULL) { printf("malloc error!\n"); exit(1); } } void create_node(Link *newnode) { *newnode = (Link)malloc(sizeof(Stu)); is_malloc_ok(*newnode); } void create_link(Link * head) { create_node(head); (*head)->next = *head; (*head)->prior = *head; } void insert_node_head(Link head, Link newnode) { newnode->prior = head; newnode->next = head->next; head->next = newnode; newnode->next->prior = newnode; } void insert_list(Link head, char name[], int age) { Link newnode; create_node(&newnode); strcpy(newnode->name, name); newnode->age = age; insert_node_head(head, newnode); } void display_list(Link head) { Link p; p = head; while(p->next != head) { p = p->next; printf("%s %d\n", p->name, p->age); } printf("\n"); } void find_list(Link head) { Link temp = NULL; temp = head->next; int sub = 0; int age = 0; int i = 0; int j = 0; int num = 100; int match = 0; printf("please input age:\n "); scanf("%d", &age); while(temp != head) { sub = abs((temp->age) - age); temp = temp->next; i++; if(sub < num) { num = sub; match = i; } } temp = head->next; for(j = 1; j < match; j++) { temp = temp->next; } printf("the matched student is:%s\n", temp->name); } int main() { Link head; create_link(&head); insert_list(head, "zhangsan", 20); insert_list(head, "lisi", 21); insert_list(head, "wangwu", 22); insert_list(head, "zhaoliu", 23); insert_list(head, "qianqi", 21); display_list(head); find_list(head); return 0; }
相关文章推荐
- 苏嵌嵌入式linux实训 第2天
- 苏嵌实训-嵌入式 linux C 第 3 天
- 苏嵌实训-嵌入式 linux C 第1 天
- 苏嵌实训-嵌入式Linux C 第 2天
- 苏嵌嵌入式linux实训 第 3 天
- 苏嵌嵌入式Linux实训 第5天
- 苏嵌工程实训-嵌入式Linux开发(基础命令)
- 苏嵌嵌入式linux实训 第一天
- 苏嵌实训-嵌入式 linux C 第 2 天
- 苏嵌实训-嵌入式Linux C 第 1天
- 苏嵌嵌入式linux实训 实训第2天
- 苏嵌嵌入式Linux实训第六天
- 苏嵌实训-嵌入式linux C 第 1 天
- 苏嵌实训-嵌入式 linux C 第 2 天
- 【苏嵌实训-嵌入式 LinuxC 第 1 天】
- 苏嵌嵌入式Linux实训 第 6天
- 苏嵌嵌入式Linux实训第七天
- 苏嵌嵌入式Linux实训第五天
- 苏嵌嵌入式Linux实训 第3天
- 苏嵌实训-嵌入式 linuxC 第 1 天