您的位置:首页 > 运维架构 > Linux

苏嵌实训-嵌入式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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: