GDPU 数据结构 天码行空2

2023-09-15 15:28:38

实验内容

用顺序表实现病历信息的管理与查询功能。具体要求如下:

  1. 利用教材中定义顺序表类型存储病人病历信息(病历号,姓名,症状);要求使用头文件。

  2. 设计顺序表定位查找算法,写成一个函数,完成的功能为:在线性表L中查找数据元素x,如果存在则返回线性表中和x值相等的第1个数据元素的序号;如果不存在,则返回-1。

    函数定义为 int ListFind(SequenceList L,char *x)

请在主函数中测试查找是否存在姓名为x的病人,并根据返回的序号打印出病人信息。


注意 头文件的名称 和 主程序导入的头文件名称 需要一致,并且两文件放在同一目录下。

🍻 头文件 head.h

头文件写 patient 结构体 和 SequenceList 顺序表结构体 和 各种方法

#include <stdio.h>
#include <string.h>
#define MaxSize 10000

typedef struct  {
	int id;//病历号
	char* name;//病人名称
	char* symptoms;//症状
}patient;

typedef struct 
{
	patient list[MaxSize];
	int size;
}SequenceList;
//初始化一个顺序表,长度为 0
void ListInitialize(SequenceList *L)
{
	L->size = 0;
}

//返回顺序表中的元素个数
int ListLength(SequenceList L)
{
	return L.size;
}

// 在顺序表 L 的位置 i 前插入 x 值
int ListInsert(SequenceList *L,int i,patient p)
{
	int j = 0;
	if(L -> size >= MaxSize)
	{
		printf("顺序表已满 \n");	 
		return 0;
	}
	if(i < 0 || i > L->size)
	{
		printf("参数i不合法 \n");
		return 0;
	}
	for(j = L -> size; j > i; j--)
		L -> list[j] = L -> list[j-1];
	L -> list[i] = p;
	L -> size++;
	return 1; 
	
} 

// 在顺序表 L 中查找姓名为 x 的下标
int ListFind(SequenceList L,char *name)
{
	int size = ListLength(L);
	for(int i = 0; i < size; i++)
	{
//		strcmp(s1,s2) 当s1 == s2 返回 0
		if(!strcmp(name,L.list[i].name))
			return i;
	}	
	return -1;//不存在则返回-1 
}

//打印顺序表所有内容
void ListPrint(SequenceList L)
{
	for(int i = 0; i < ListLength(L); i++)
	{
		printf("%d %s %s\n",L.list[i].id,L.list[i].name,L.list[i].symptoms);
	}
}

//打印出指定序号的病人信息
void PrintById(SequenceList L,int idx)
{
	printf("id: %d, 姓名:%s, 症状:%s\n",
		L.list[idx].id,
		L.list[idx].name,
		L.list[idx].symptoms);
}

🍻 hello.c

主文件调用写好的结构体和方法

#include "head.h" //导入自定义的头文件 head.h

int main()
{
	SequenceList L;
	ListInitialize(&L);
	//以下为测试数据 可以换成输入的形式
	patient p1 = {1,"张三","症状1"};
	patient p2 = {2,"李四","症状2"};
	patient p3 = {3,"王五","症状3"}; 
	ListInsert(&L,0,p1); 
	ListInsert(&L,0,p2);
	ListInsert(&L,0,p3);

//	printf("===病历表===\n");
//	ListPrint(L);

	char name[100];
	printf("请输入要查找的姓名:");
	scanf("%s",name);
	int res = ListFind(L,name);//res 为病人 x 在顺序表中的下标,x = -1说明不存在
	if(res == -1)
		printf("查无此人");
	else
		PrintById(L,res);
	
	return 0;
}

样例1

在这里插入图片描述


样例2

在这里插入图片描述


😋 有空的可以写一下输入数据

更多推荐

局部放电试验电源的频率、 电压及持续时间和判断

1)电压频率、电压及持续时间。为保证被试变压器加压时,铁心不磁饱和,应尽量减小试验电源频率,以利于减小补偿电感的容量。220kV及以上变压器进行局放试验施加电压与时间见下表:|施加电压|(1.3~1.5)Um/√3|1.7Um/√3|(1.3~1.5)Um/√3||------------|------------|-

单元测试 —— JUnit 5 参数化测试

JUnit5参数化测试目录设置我们的第一个参数化测试参数来源@ValueSource@NullSource&@EmptySource@MethodSource@CsvSource@CsvFileSource@EnumSource@ArgumentsSource参数转换参数聚合奖励总结如果您正在阅读这篇文章,说明您已经熟

SpringCache -- Redis --- 配置与缓存使用--配置过期时间

写在前面:学redis,还是得搭配SpringCache来玩一玩。前置内容win安装+redis基础springboot使用redis文章目录导入依赖配置cache使用@Cacheable@CachePut@CacheEvict配置过期时间依据cacheName设置在注解上截取过期时间导入依赖<!--redis依赖--

面试:经典问题解决思路

1.秒杀系统架构参考:秒杀系统架构优化思路2.如何防止订单重复提交重复提交原因:一种是由于用户在短时间内多次点击下单按钮,或浏览器刷新按钮导致。另一种则是由于Nginx或类似于SpringCloudGateway的网关层,进行超时重试造成的。方案描述优点缺点方案一提交订单按钮置灰简单易实现,常用于短信验证码场景只能解决

第二证券:个人开证券账户要开户费吗?

随着互联网和移动端东西的遍及,越来越多的人开端涉足股票投资,开立证券账户也成为一个热门话题。但是,许多初学者或许会有疑问,个人开证券账户是否需求支付开户费呢?这个问题的答案并不是那么简略,需求考虑多方面的要素。首先,需求明确的是,证券账户开立都是需求遵循中国证监会的相关规矩的。按照现在的规矩,证券公司不得向客户收取开户

qt功能自己创作

按钮按下三秒禁用voidMainWindow::on_pushButton_5_clicked(){//锁定界面setWidgetsEnabled(ui->centralwidget,false);//创建一个定时器,等待3秒后解锁界面QTimer::singleShot(3000,this,[=](){setWidg

【计算机网络】——数据链路层(应用:介质访问控制)

//仅做个人复习和技术交流,图片取自王道考研,侵删一、大纲1、介质访问控制信道划分介质访问控制随机访问介质访问控制2、局域网3、广域网4、数据链路层设备二、介质访问控制省流:把广播信道通过介质访问控制机制逻辑上转换为点对点的信道。介质访问控制:采取一定措施,使得两个节点之间的通信不会发生相互干扰的情况。用来决定广播信道

6. 装饰器

UML聚合(Aggregation)关系:大雁和雁群,上图中空心菱形+箭头表示聚合关系组合(Composition)关系:大雁和翅膀,实心菱形+箭头表示组合(Composition)关系测试代码#include<iostream>#include<stdio.h>#include<mutex>//锁头文件usingna

c++运算符重载

目录运算符重载的基本概念重载加号运算符(+)类内实现类外实现运算符重载碰上友元函数可重载和不可重载的运算符可重载的运算符不可重载的运算符重载自加自减运算符(a++++a)智能指针重载等号运算符(=)重载等于和不等运算符(==!=)运算符重载的基本概念概念:运算符重载与函数重载比较类似,相当于让一个运算符具有另外一种含义

PHP 做 Mysql 数据统计,通过时间戳 统计 每分钟多少条 每十分钟多少条?

如果mysql表中数据结构时间字段是按时间戳存的,PHP如何按每分钟有多少条来统计数据<?php//连接MySQL数据库$servername="localhost";$username="your_username";$password="your_password";$dbname="your_database";

利用NHANES数据库还能构建预测模型? 中国学者写了篇文章,AUC=0.842

Nhanes美国营养调查数据库的培训课程(直播回放)来了!“Nhanes数据挖掘”课程(直播回放)!欢迎报名,发表文章即退款2021年2月,广东省医学科学院、广东省人民医院、广东省心血管研究所心内科,广东省冠心病防治重点实验室的学者在《AnnalsofPalliativeMedicine》(四区)发表题为:Deriva

热文推荐