zoukankan      html  css  js  c++  java
  • 合并链表,按主键升序

    已有两个链表,每个链表中的结点包括学号,成绩。要求把两个链表合并,按学号升序排列。

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>  
    #include <stdlib.h>  
    #define N 10  
    
    typedef struct student
    {
        int num;
        float score;
        struct student *next;
    }stu;
    
    stu *creat()
    {
        int i;
        stu *p, *head = NULL, *tail = head;
        for (i = 0; i < N; i++)
        {
            p = (stu *)malloc(sizeof(stu));
            scanf("%d,%f", &p->num, &p->score);
            p->next = NULL;
            if (p->num <= 0)
            {
                free(p);
                break;
            }
            if (head == NULL)
                head = p;
            else
                tail->next = p;
            tail = p;
        }
        return head;
    }
    
    void print(stu *p)
    {
        while (p != NULL)
        {
            printf("%d	%.2f
    ", p->num, p->score);
            p = p->next;
        }
    }
    
    stu *link(stu *p1, stu *p2)
    {
        stu *p, *head;
        if (p1->num < p2->num)
        {
            head = p = p1;
            p1 = p1->next;
        }
        else
        {
            head = p = p2;
            p2 = p2->next;
        }
        while ((p1 != NULL) && (p2 != NULL))
        {
            if (p1->num < p2->num)
            {
                p->next = p1;
                p = p1;
                p1 = p1->next;
            }
            else
            {
                p->next = p2;
                p = p2;
                p2 = p2->next;
            }
        }
        if (p1 != NULL)
            p->next = p1;
        else
            p->next = p2;
    
        return head;
    }
    
    int main()
    {
        stu *a, *b, *c;
        printf("
    请输入链表a的信息,学号小于等于零时结束输入:格式(学号,成绩)
    ");
        a = creat();
        printf("
    请输入链表b的信息,学号小于等于零时结束输入:格式(学号 成绩)
    ");
        b = creat();
        printf("
    链表a的信息为:
    ");
        print(a);
        printf("
    链表b的信息为:
    ");
        print(b);
        c = link(a, b);
        printf("
    合并后的链表信息为:
    ");
        print(c);
        return 0;
    }
  • 相关阅读:
    Hibernate4
    Hibernate3 多对多关系
    Hibernate 二(一级缓存,多表设计之一对多)
    Hibernate 配置文件
    Hibernate 基础解析(Configuration,SessionFactory,Session,Transaction,Query,Criteria)
    struts2 防止表单的重复提交
    struts2 UI标签 和 主题
    struts2 OGNL配和通用标签和其它标签的使用
    struts2 对EL的改变
    struts2 contextMap
  • 原文地址:https://www.cnblogs.com/qixinbo/p/7497712.html
Copyright © 2011-2022 走看看