两道C语言的题,求解

Monica 2010-05-31 01:41:25
数据结构作业
一、问题描述:
设停车场是一个可停放n辆车的狭长通道,且只有一个大门可供汽车进出。在停车场内,汽车按到达的先后次序,由北向南依次排列(假设大门在最南端)。若车场内已停满n辆车,则后来的汽车需在门外的便道上等候,当有车开走时,便道上的第一辆车即可开入。当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门后,其他车辆再按原次序返回车场。每辆车离开停车场时,应按其停留时间的长短交费(在便道上停留的时间不收费)。
基本要求:
(1)要求以顺序栈模拟停车场,以链队列模拟便道。
(2)从终端读入汽车到达或离去的数据,每组数据包括三项:1、是“到达”还是“离去”;2、汽车牌照号码;3、“到达”或“离去”的时刻。与每组输入信息相应的输出信息为:如果是到达的车辆,则输出其在停车场中或便道上的位置;如果是离去的车辆,则输出其在停车场中停留的时间和应交的费用。

二、 问题描述
对单位的职工进行管理。包括插入,删除,查找,排序等功能。
要求
职工对象包括姓名、性别、出生年月、学历 、职务 、 住址 、 电话等信息。
(1) 新增一名职工:将新增职工对象按姓名以字典方式插入到职工管理文件中。
(2) 删除一名职工:从职工管理文件中删除一名职工对象。
(3) 查询:从职工管理文件中查询符合某些条件的职工。(折半查找法)
(4) 排序:按某种需要对职工对象文件进行排序。(插入,冒泡,选择,选其中方法之一)
...全文
265 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rannger 2010-06-01
  • 打赏
  • 举报
回复
-_-
自己的作业自己做~~~~~~
HXLSJR 2010-06-01
  • 打赏
  • 举报
回复
我晕了
周靖峰 2010-05-31
  • 打赏
  • 举报
回复
给你第一题的答案吧,很早做的,貌似已经发过N次了

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STACKSIZE 2
#define LICENCESIZE 10
#define CHARGE 0.2 //每分钟的停车费
#define TRUE 1
#define FALSE 0

typedef struct Time
{
int hour;
int minute;
}Time;

typedef struct Car
{
int leaved;
char licence[LICENCESIZE];
Time arrive;
Time leave;
}Car;

typedef struct Stack
{
Car elem[STACKSIZE];
int top;
}Stack;

typedef struct QueueNode
{
Car data;
struct QueueNode *next;
}QueueNode;

typedef struct
{
struct QueueNode *front;
struct QueueNode *rear;
}Queue;

void SetTime(Time *t)
{
scanf("%d:%d%*c", &t->hour, &t->minute);
}

void ShowTime(Time *t)
{
printf("%d:%d\n", t->hour, t->minute);
}

double Fee(Time t1, Time t2) //t1为进停车场的时间,t2为出停车场的时间
{
double t;

if (t1.hour == -1)
return 0;
else
t = (t2.hour - t1.hour) * 60 + (t2.minute - t1.minute);
return (t * CHARGE);
}

void InitStack(Stack *S)
{
S->top = -1;
}

int EmptyStack(Stack *S)
{
if (S->top == -1)
return (TRUE);
else
return (FALSE);
}

int FullStack(Stack *S)
{
if (S->top == STACKSIZE - 1)
return (TRUE);
else
return (FALSE);
}

int Push(Stack *S, Car c)
{
if (FullStack(S))
return (FALSE);
else
{
S->top++;
S->elem[S->top] = c;
return (TRUE);
}
}

int Pop(Stack *S, Car *c)
{
if (EmptyStack(S))
return (FALSE);
else
{
(*c) = S->elem[S->top];
S->top--;
return (TRUE);
}
}

int InitQueue(Queue *Q)
{
Q->front = (QueueNode *)malloc(sizeof(QueueNode));
if (Q->front == NULL)
return (FALSE);
else
{
Q->rear = Q->front;
Q->front->next = NULL;
return (TRUE);
}
}

int EnterQueue(Queue *Q, Car c)
{
Q->rear->next = (QueueNode *)malloc(sizeof(QueueNode));
if (Q->rear->next == NULL)
return (FALSE);
else
{
Q->rear = Q->rear->next;
Q->rear->data = c;
Q->rear->next = NULL;
return (TRUE);
}
}

int EmptyQueue(Queue *Q)
{
if (Q->front == Q->rear)
return (TRUE);
else
return (FALSE);
}

int DeleteQueue(Queue *Q, Car *c)
{
QueueNode *t;
if (EmptyQueue(Q))
return (FALSE);
else
{
t = Q->front->next;
if (Q->rear == t)
Q->rear = Q->front;
(*c) = t->data;
Q->front->next = t->next;
free(t);
return (TRUE);
}
}

void CarIn(Stack *park, Queue *shortcut)
{
Car c;
Time t;

printf("请输入当前时间:");
SetTime(&t);
printf("请输入车牌号:");
gets(c.licence);
c.arrive.hour = -1;
if (FullStack(park))
{
printf("停车场已满,新来的车在过道等待。\n");
EnterQueue(shortcut, c);
}
else
{
printf("车已在停车场停车,现在开始计时。\n");
c.arrive = t;
Push(park, c);
}
printf("\n");
}

void CarOut(Stack *park, Stack *temp, Queue *shortcut)
{
char licence[LICENCESIZE];
Car c;
Time t;

printf("请输入当前时间:");
SetTime(&t);
printf("请输入车牌号:");
gets(licence);
Pop(park, &c);
while (strcmp(c.licence, licence) != 0)
{
Push(temp, c);
Pop(park, &c);
}
c.leave = t;
printf("该车应付:%.2lf元\n", Fee(c.arrive, c.leave));
while (!EmptyStack(temp))
{
Pop(temp, &c);
Push(park, c);
}
if (!EmptyQueue(shortcut))
{
DeleteQueue(shortcut, &c);
c.arrive = t;
Push(park, c);
}
printf("\n");
}

void LookNow(Stack *park, Stack *temp, Queue *shortcut)
{
Car c;
QueueNode *p;

while (!EmptyStack(park))
{
Pop(park, &c);
Push(temp, c);
}
while (!EmptyStack(temp))
{
Pop(temp, &c);
printf("%-10s:停车\n", c.licence);
Push(park, c);
}
p = shortcut->front->next;
while (p != NULL)
{
printf("%-10s:等待\n", p->data.licence);
p = p->next;
}
printf("\n");
}

int main()
{
Stack park, temp;
Queue shortcut;
int t = 1;

InitStack(&park);
InitStack(&temp);
InitQueue(&shortcut);
while (t)
{
printf("请选择,1进车,2出车,3查看现状,0退出:");
scanf("%d%*c", &t);
switch (t)
{
case 1: CarIn(&park, &shortcut); break;
case 2: CarOut(&park, &temp, &shortcut); break;
case 3: LookNow(&park, &temp, &shortcut); break;
case 0: break;
}
}
return 0;
}
z569362161 2010-05-31
  • 打赏
  • 举报
回复
作业是没人替做的,有可能还会被删帖子。

多次会被封号的
hhei007 2010-05-31
  • 打赏
  • 举报
回复
。。。从停车场出来的时候,还要求后进入停车场的车子给他让路。。。大哥,哪个停车场啊,早被人砸了。。
Lynlz 2010-05-31
  • 打赏
  • 举报
回复
作业题。我也在等待答案呢
kongjiajie 2010-05-31
  • 打赏
  • 举报
回复
作业呀。
fireyou 2010-05-31
  • 打赏
  • 举报
回复
又是作业题。。。
toplinq 2010-05-31
  • 打赏
  • 举报
回复
lz参加的是卓越的笔试么?这是我去年做过的两道Joyo Amazon得笔试题
jsjygm 2010-05-31
  • 打赏
  • 举报
回复
如果我考完试,你的帖子还在,我想试试!
小楫轻舟 2010-05-31
  • 打赏
  • 举报
回复
哈哈,好熟悉的题目,
原来以前学数据结构,老师布置的上机题就是那个停车模拟题,
可惜代码没保存,
提示的很清晰了,用顺序栈模拟,
作业题楼主还是自己做做吧。。。
yoan_T 2010-05-31
  • 打赏
  • 举报
回复
结帖率:0.00%

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧