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

.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;
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值