问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用c语言(数据结构)编程,要详细的

发布网友 发布时间:2022-04-23 23:04

我来回答

2个回答

热心网友 时间:2023-10-13 01:26

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 3 // 停车场最大容量
#define price 5 //每小时5元
typedef struct time {
int hour;
int min;
} Time;// 定义时间结构体
typedef struct node {
char num[10];
Time reach;
Time leave;
} CarNode;// 定义车辆信息结构体
typedef struct NODE {
CarNode * stack[MAX + 1];
int top;
} SeqStackCar;
typedef struct car {
CarNode *data;
struct car *next;
} QueueNode;
typedef struct Node {
QueueNode *head;
QueueNode *rear;
} LinkQueueCar;
void InitStack(SeqStackCar *s) {
int i;
s->top = 0;
for (i = 0; i <= MAX; i++)
s->stack[s->top] = NULL;
}// 栈的初始化
int InitQueue(LinkQueueCar *Q) {
Q->head = (QueueNode *) malloc(sizeof (QueueNode));
if (Q->head != NULL) {
Q->head->next = NULL;
Q->rear = Q->head;
return (1);
} else return (-1);
}// 队列的初始化
void PRINT(CarNode *p, int room) { // 车辆收费
int A1, A2, B1, B2;
printf("\n车辆离开的时间:");
scanf("%d:%d", &(p->leave.hour), &(p->leave.min));
printf("\n离开车辆的车牌号为:");
puts(p->num);
printf("\n其到达时间为: %d:%d", p->reach.hour, p->reach.min);
printf("\n离开时间为: %d:%d", p->leave.hour, p->leave.min);
A1 = p->reach.hour;
A2 = p->reach.min;
B1 = p->leave.hour;
B2 = p->leave.min;
printf("\n应交费用为: %2.1f元", ((B1 - A1)*60 + (B2 - A2)) * price);
free(p);
}
int Arrival(SeqStackCar *Enter, LinkQueueCar *W) {
CarNode *p;
QueueNode *t;
p = (CarNode *) malloc(sizeof (CarNode));
printf("\n请输入车牌号(例:豫B1234):");
scanf("%d",&p->num);
if (Enter->top < MAX) {
Enter->top++;
printf("\n车辆在车场第%d位置.", Enter->top);
printf("\n车辆到达时间:");
scanf("%d:%d", &(p->reach.hour), &(p->reach.min));
Enter->stack[Enter->top] = p;
return (1);
} else {
printf("\n该车须在便道等待!有车位时进入车场");
t = (QueueNode *) malloc(sizeof (QueueNode));
t->data = p;
t->next = NULL;
W->rear->next = t;
W->rear = t;
return (1);
}
}// 车辆的到达登记
void Leave(SeqStackCar *Enter, SeqStackCar *Temp, LinkQueueCar *W) { //车辆的离开
int room;
CarNode *p, *t;
QueueNode *q;

if (Enter->top > 0) // 判断车场是否为空
{
while (1) {
printf("\n请输入车在车场的位置/1--%d/:", Enter->top);
scanf("%d", &room);
if (room >= 1 && room <= Enter->top) break;
else printf("\n 输入有误,请重输: ");

}
while (Enter->top > room) // 把要删除的车辆的前面的车开出来,进临时栈。
{
Temp->top++;
Temp->stack[Temp->top] = Enter->stack[Enter->top];
Enter->stack[Enter->top] = NULL;
Enter->top--;
}
p = Enter->stack[Enter->top]; // 把要删除的车辆节点赋给p。
Enter->stack[Enter->top] = NULL;
Enter->top--;
while (Temp->top >= 1) // 再把临时栈里德车辆进停车场
{
Enter->top++;
Enter->stack[Enter->top] = Temp->stack[Temp->top];
Temp->stack[Temp->top] = NULL;
Temp->top--;
}
PRINT(p, room); // 调用计费函数计费
if ((W->head != W->rear) && Enter->top < MAX) //如果便道上有车,则再开进停车场。
{
q = W->head->next;
t = q->data;
Enter->top++;
printf("\n便道的%s号车进入车场第%d位置.", t->num, Enter->top);
printf("\n请输入%s号车进入车场的时间:", t->num);
scanf("%d:%d", &(t->reach.hour), &(t->reach.min));
W->head->next = q->next;
if (q == W->rear) W->rear = W->head;
Enter->stack[Enter->top] = t;
free(q);
} else printf("\n便道里没有车.\n");
} else printf("\n车场里没有车.");
}
void List1(SeqStackCar *S){ int i;
if (S->top > 0) {
printf("\n车场:");
printf("\n 位置 到达时间 车牌号\n");
for (i = 1; i <= S->top; i++) {
printf(" %d ", i);
printf(" %d:%d ", S->stack[i]->reach.hour, S->stack[i]->reach.min);
puts(S->stack[i]->num);
}
} else printf("\n车场里没有车");
}//显示车场里的车辆情况
void List2(LinkQueueCar *W) {
QueueNode *p;
int i;
p = W->head->next;
if (W->head != W->rear) {
printf("\n等待车辆的号码为:");
for (i = 1; (p != NULL); i++) {
printf("\n第 %d 车辆.", i);
puts(p->data->num);
p = p->next;
}
} else printf("\n便道里没有车.");

printf("\n");
}//显示便道上的车辆情况
void List(SeqStackCar S, LinkQueueCar W) {
int flag, tag;
flag = 1;
while (flag) {
printf(" 查看车辆列表显示: ");
printf("\n 1.车场列表\n 2.便道列表\n 3.返回主菜单\n");
printf("\n请选择 1~3:");
while (1) {
scanf("%d", &tag);
if (tag >= 1 && tag <= 3) break;
else printf("\n 输入有误,请重新选择 1~3:");
}
switch (tag) {
case 1:List1(&S);
break;
case 2:List2(&W);
break;
case 3:flag = 0;
system("cls");
break;
default: break;
}
}
}//显示,遍历
int main() {
SeqStackCar Enter, Temp;
LinkQueueCar Wait;
int ch;
InitStack(&Enter);
InitStack(&Temp);
InitQueue(&Wait);
while (1) {
printf("\n ############ 欢迎使用停车场系统.############\t\n\n");
printf("\n\t * 1. 车辆到达登记.\t\n");
printf("\n\t * 2. 车辆离开登记.\t\n");
printf("\n\t * 3. 车辆列表显示.\t\n");
printf("\n\t * 4. 退出系统.\t\n\n");
while (1) {
printf(" 请选择: ");
scanf("%d", &ch);
if (ch >= 1 && ch <= 4)break;
else printf("\n 输入有误,请重新选择: 1~4: ");
}
switch (ch) {
case 1:Arrival(&Enter, &Wait);
break;
case 2:Leave(&Enter, &Temp, &Wait);
break;
case 3:List(Enter, Wait);
break;
case 4:exit(0);
default: break;
}
}
}// 自定义函数
应该就是这样了

热心网友 时间:2023-10-13 01:26

晕了只是三组数据。什么数据结构没弄明白?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
珍珠粉可以天天敷脸吗 教你自制珍珠粉面膜 中超什么时候成立 交通刷卡金是什么 哪吒V上市进入倒计时,车身超4米,轴距为2420mm,续航里程401km. 关于倩女幽魂爆鬼问题 倩女幽魂什么是大宝队 关于倩女幽魂爆鬼分红的问题 泰国绿咖喱中的咖喱酱是如何制作的,它的独特口味来源于哪些香料?_百度... 好看电视剧,推荐个,现代都市剧,古装剧,战争爱情剧都可以,要经典,确确 ... 去北京上大学转户口好不好 c语言编程 数据结构题 数据结构C语言版 编程 C语言中所谓的数据结构是什么啊? 数据结构C语言程序设计编程题,请问这个程序怎么编? C语言 编程 数据结构 c语言 数据结构在c语言编程时到底怎么用? C语言编程(数据结构) 什么是c语句? C语言数据结构编程 数据结构 c语言 编程 数据结构和C语言有什么区别? 数据结构 c语言编程 数据结构c语言编程 急求!!! 数据结构C语言编程 泡妞神器软件下载寻找 最好的免费交友约会软件是什么 手机泡妞软件有哪些 安卓泡妞软件,苹果泡妞软件有哪些哦? 免费的交友约会软件靠谱的那种有吗? 泡妞神器软件下载 c语言编程求解,数据结构? 数据结构(C语言编程)的问题? 数据结构 C语言程序编写 系统错误,找不到msvcp140.dll怎么办 电脑msvcp140.dll丢失的解决方法? 电脑说找不到msvcp140怎么办 缺少MSVCP140D.DLL 文明6提示丢失msvcp140.dll怎么办 缺少dll文件的解决方法 打开电脑就会提示找不到MSVCP140.doll、VCRUNTIME140.doll 求解决? 运行程序提示由于缺少msvcp140_1.dll和msvcp140_2.dll怎么办? 缺少msvcp140.dll怎么办 怎么卸载ps2020photoshop.exe-系统错误 由于找不到 msvcp140d,无法继续执行代 我的电脑重装系统后没有了MSVCP71.d11,怎么办吖 origin下载后显示找不到msvcp140dll 缺少msvcp140.dll文件怎么办 OPPOR11一直重启怎么办? 我oppor11手机昨晚更新系统然后就一直开机重启充电也开机重启什么情况... 进口货物原始凭证 委托加工物资收回时消费税和*都是由委托方支付,消费税由受托方代收代缴,那*呢? 完税证明和发票是一回事吗