链表的使用(创建学生链表:实现增加学生,对年龄排序,逆序,查找与需要年龄最近的学生)//2018.07.25.

本文通过四个题目详细介绍了如何使用链表来管理学生信息,包括创建男生和女生的链表,按年龄合并并排序,链表反转以实现年龄逆序,以及在已排序链表中快速查找与给定年龄最接近的学生。通过这些操作展示了链表在数据处理中的应用。
摘要由CSDN通过智能技术生成

.1.题目:创建两个学生链表,含有姓名、年龄的信息,一个链
  表存放男生,一个链表存放女生。


.2.题目:将上面两个链表合并,按学生的年龄进行排序,合
  成新的链表.


.3.题目:将上题中建立的链表进行反转,实现按年龄的逆序
  排列


.4.题目:在上面的实现的新链表中,给定一个年龄,迅速查
  找和该学生年龄最接近的学生姓名。

 

 

综合后的代码:链表实现增加学生信息;按学生年龄排序;学生数据逆序;给定一个年龄,迅速查找和该学生年龄最接近的学姓名。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX sizeof(char) * 20

enum RESULT
{
    RANK_FAIL,
    RANK_SUCCESS,
    Reverse_fail,
    Reverse_success,
    Search_fail,
    Search_success
};


/****定义结构体******/
struct students
{
    char * name;
    char sex;
    int age;
    struct students *next;
};
typedef struct students Student;
typedef Student * STU;

/*****初始化头指针*******/
void init_head(STU *head)
{
    *head = (STU)malloc(sizeof(Student));
    (*head)->next = NULL;
}

/******链表尾插入函数*******/
void insert_tail(STU newstudent,STU *head)
{
    STU temp = *head;
    while(temp->next != NULL)
    {
        temp = temp->next;
    }
    temp->next = newstudent;
    newstudent->next = NULL;
}

/******年龄排序函数********/
int rank_age(STU *head)
{
    int i;
    int j;
    int n;
    int count = 0;
    
    STU p = *head;
    STU	s = p->next;
    STU	t = s->next;

#if 1
    if(((*head)->next == NULL) || ((*head)->next->next == NULL))
    {
        return RANK_FAIL;
    }
    else
    {
#endif
        STU temp = (*head)->next;
        while(temp != NULL)
        {
            count++;
	    temp = temp->next;
        }
	n = count - 1;
	for(i = 0;i < n;i++)
	{
	    for(j = 0;j < (n - i);j++)
	    {
	        if(s->age > t->age)
		{
		    p->next = t;
		    s->next = t->next;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值