【顺序表的应用】(C语言)

【顺序表的应用】(C语言),第1张

一、问题描述

智能家居系统创建一个家居环境参数表,包含“日期、时间、地点、温度、湿度”等信息。程序能够完成如下功能:

(1) 能够逐条输入信息,创建表;

(2) 能够显示表中的所有信息;

(3) 根据时间和地点进行查找,返回相关参数信息;

(4) 给定一条环境参数信息,按照日期和时间顺序插入到表中指定的位置;

(5) 删除指定日期的记录;

二、算法设计

序号

名称

函数表示符

*** 作说明

1

顺序表初始化

InitList

初始化一个顺序表

2

顺序表创建

ListCreate

可以输入信息

3

顺序表查找

Locate

按照时间和地点查找

4

顺序表插入

ListInsert

在指定位置插入顺序表

5

顺序表删除

ListDelete

删除指定位置的顺序表

6

主函数

Main

主函数

 三、代码实现

#include
#include
#include
#define MAXSIZE 100
#define OK 1
#define ERROR 0
#define OVERFLOW -2
using namespace std;
typedef struct//定义一个message的信息表
{
	char date[20];
	char time[20];
	char place[20];
	int temp;
	int hum;
}message;
typedef struct//定义一个顺序表
{
	message *p;
	int length;
}SqList;

//能够逐条输入信息,创建表
int InitList(SqList &L)//初始化
{
	L.p=new message[MAXSIZE];//分配存储空间
	if(!L.p)
		exit(OVERFLOW);
	L.length=0;//空表长度为0
	return OK;
}
int ListCreate(SqList &L,int j,message e)//输入信息
{
	if(j<0||j>MAXSIZE)
		return ERROR;
	if(L.length==MAXSIZE)
		return OVERFLOW;
	strcpy(L.p[j].date,e.date);
	strcpy(L.p[j].time,e.time);
	strcpy(L.p[j].place,e.place);
	L.p[j].temp=e.temp;
	L.p[j].hum=e.hum;
	L.length++;
	return OK;
}
int Locate(SqList L,char e[],char f[])//按时间和地点查找
{
	int i;
	for(i=0;iL.length+1))
		return ERROR;
	if(L.length==MAXSIZE)
		return ERROR;
	for(j=L.length-1;j>=i-1;j--)//插入位置及以后的元素后移
	{
		strcpy(L.p[j+1].date,L.p[j].date);
		strcpy(L.p[j+1].time,L.p[j].time);
		strcpy(L.p[j+1].place,L.p[j].place);
		L.p[j+1].temp=L.p[j].temp;
		L.p[j+1].hum=L.p[j].hum;
	}
	//将新的元素插到第i个位置去
	strcpy(L.p[i-1].date,e.date);
	strcpy(L.p[i-1].time,e.time);
	strcpy(L.p[i-1].place,e.place);
	L.p[i-1].temp=e.temp;
	L.p[i-1].hum=e.hum;
	++L.length;
	return OK;
}
int ListDelete(SqList &L,int i)//删除一条信息
{
	int j;
	if((i<1)||(i>L.length))
		return ERROR;
	for(j=i;j<=L.length-1;j++)//被删除之后的元素前移
	{
		strcpy(L.p[j-1].date,L.p[j].date);
		strcpy(L.p[j-1].time,L.p[j].time);
		strcpy(L.p[j-1].place,L.p[j].place);
		L.p[j-1].temp=L.p[j].temp;
		L.p[j-1].hum=L.p[j].hum;
	}
	--L.length;
	return OK;
}
int main()
{
	cout << "欢迎来到南南的顺序表!" << endl;
	int i,n,k,x;
	message e,g;
	SqList L;
	InitList(L);
	char str[20];
	char strr[20];
	cout<<"请输入要创建的表的个数:";
	cin>>n;
	for(i=0;i>e.date;
		cout<<"第"<>e.time;
		cout<<"第"<>e.place;
		cout<<"第"<>e.temp;
		cout<<"第"<>e.hum;
		ListCreate(L,i,e);
	}
	for(i=0;i>str>>strr;
	Locate(L,str,strr);
	cout<<"请输入待插入的信息"<>k;
	cout<<"待插入信息的日期是";
	cin>>g.date;
	cout<<"待插入信息的时间是";
	cin>>g.time;
	cout<<"待插入信息的地点是";
	cin>>g.place;
	cout<<"待插入信息的温度是";
	cin>>g.temp;
	cout<<"待插入信息的湿度是";
	cin>>g.hum;
	ListInsert(L,k,g);
	cout<<"插入操作后的所有的信息如下:"<>x;
	ListDelete(L,x);
	cout<<"删除操作后的所有的信息如下:"<

四、运行说明

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1294649.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)