(数据结构)验证表

(数据结构)验证表:

应用中有时需要验证来自不同地方的两个表的信息是否一致。本实验编写具有如下功能的程序:输入两个学生记录表LIST1,LIST2,在表LIST2中找出所有没有在表LIST1中出现的学生记录(设表LIST1为基础数据表,非空)。

每一个学生记录元素包含两个数据项:学号(整数),姓名;

如果学生记录表LIST2中的记录都包含在LIST1中,则输出the records of LIST2 are all in the LIST1.

如果学生记录表LIST2中的存在学号,姓名不能与表LIST1完全匹配的记录,则输出 学号(%8d)姓名(%15s)is not in LIST1.

如果LIST2为空表,则输出the LIST2 is NULL.

测试输入期待输出
5↵ 20120001 zhangli↵ 20120002 wanglei↵ 20120003 duyang↵ 20120004 lixin↵ 20120005 liufan↵ 3↵ 20120001 zhangli↵ 20120006 lixin↵ 20120002 wanglei↵20120006 lixin is not in LIST1.↵
5↵ 20120001 zhangli↵ 20120002 wanglei↵ 20120003 duyang↵ 20120004 lixin↵ 20120005 liufan↵ 3↵ 20120001 zhangli↵ 20120004 wanglei↵ 20120006 duyang↵20120004 wanglei is not in LIST1.↵ 20120006 duyang is not in LIST1.↵
5↵ 20120001 zhangli↵ 20120002 wanglei↵ 20120003 duyang↵ 20120004 lixin↵ 20120005 liufan↵ 0↵the LIST2 is NULL.↵
5↵ 20120001 zhangli↵ 20120002 wanglei↵ 20120003 duyang↵ 20120004 lixin↵ 20120005 liufan↵ 3↵ 20120002 wanglei↵ 20120001 zhangli↵ 20120004 lixin↵the records of LIST2 are all in the LIST1.↵

代码如下:

#include<stdio.h>  
#include<stdlib.h>  
#include<string.h>  
typedef struct L  
{  
    long id;  
    char name[15];  
    struct L *next;  
} NODE;  
  
int main()  
{  
    NODE *head, *p, *q;  
    int n;  
    int flag = 0, total = 0;  
    scanf("%d", &n);  
      
    head=(NODE *)malloc(sizeof(NODE));  
    head->next = NULL;  
    q = head;  
      
    for(int i = 0; i < n; i++)  
    {  
        p = (NODE *)malloc(sizeof(NODE));  
          
        for(int j = 0; j < 15; j++)  
        (*p).name[j] = '\0';  
          
        scanf("%ld %s", &p->id, &p->name);  
          
        p->next = NULL;  
        q->next = p;  
        q = q->next;  
    }  
      
    scanf("%d", &n);  
    if(n==0) printf("the LIST2 is NULL.\n");  
      
    else  
    {  
        for(int i = 0; i < n; i++)  
        {  
            flag = 0;  
            p = (NODE *)malloc(sizeof(NODE));  
              
            for(int j = 0; j < 15; j++)  
            (*p).name[j] = '\0';  
              
            scanf("%ld %s", &p->id, &p->name);  
            q = head;  
              
            do  
            {  
                q = q->next;  
                if(q->id == p->id && strcmp(p->name, q->name) == 0)  
                {  
                    flag = 1;  
                    total++;  
                    break;  
                }  
            }while(q->next != NULL);  
              
            if(flag == 0) printf("%8d %s is not in LIST1.\n",p->id,p->name);  
              
        }  
            if(total == n) printf("the records of LIST2 are all in the LIST1.\n");  
    }  
}  
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据结构》实验教学大纲 数据结构实验 Data Structure Experiment 工学 计算机科学与技术 先修课程:高等数学、离散数学、程序设计基础(C语言 或 C++语言) 课程性质 数据结构是计算机科学的算法理论基础和软件设计的技术基础,是计算机科学技术专业的基础理论课程,是计算机学科的核心课程之一。在计算机科学技术的各个领域,选择合适的数据结构是一个重要问题;具备分析算法复杂度、比较算法性能和优化算法的能力是计算机专业学生必须具备的重要专业能力。通过数据结构算法的学习,能进一步提高软件设计与编写高效程序的能力,提高应用计算机技术解决实际问题的能力。 本课程是结合《数据结构》课堂教学安排的实验与实践课程,它是对学生的一种全面综合训练,是与课堂教学与课后练习,完成程序分析与设计、理论与实践相结合的训练的必不可少的一个教学环节。本实验课程目的是加深对数据结构算法的理解,加强理论与实践的结合,培养学生的综合动手能力。本实验强调基础知识与实际应用相结合,促使学生掌握知识并应用于解决实际问题,培养学生的动手能力和实践应用能力,起到深化理解和灵活掌握教学内容的目的。 课程任务 进行本课程实验之前,课堂任课教师或实验教师必须要求学生认真复习C语言(或C++语言)的基本编程方法,熟悉编程环境。通过本课程实验,使学生学会和掌握本课程的基本知识点和重点内容,理解数据结构的基本概念和基本原理,深刻理解逻辑结构、存储结构、算法设计之间的关系,掌握分析问题的基本方法,熟练编程的基本方法和技巧,提高解决问题的能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值