掌握栈应用的算法设计。
代码如下:
# include
# include
# include
# include
# define Max 5
typedef struct Node
{
char date[20];
time_t t;
struct Node *next;
}Node;
typedef struct List
{
Node *top;
int size;
}List;
代码如下:
void Creat(List *list)
{
Node *s = (Node*)malloc(sizeof(Node));
list->top = s;
list->top->next = NULL;
list->size = 0;
}
代码如下:
void Add(List *list)
{
if(list->size >= Max)
{
printf("车库已满\n");
return;
}
else
{
Node *p;
struct tm *T;
p = list->top;
Node *newnode = (Node*)malloc(sizeof(Node));
memset(newnode,0,sizeof(newnode));
printf("请输入您的车牌号:");
scanf("%s",newnode->date);
time(&(newnode->t));
int i;
for(i = 1;i <= list->size;i++)
{
if(strcmp(newnode->date,p->date) == 0)
{
printf("车库中已有车牌为:%s的车辆\n",p->date);
return;
}
else
p = p->next;
}
newnode->next = list->top;
list->top = newnode;
list->size++;
T = localtime(&(newnode->t));
printf("车牌号为:%s的车进来了\n",newnode->date);
printf("时间是:%d年%d月%d日%d时%d分%d秒\n",
1900+T->tm_year,
1+T->tm_mon,
T->tm_mday,
T->tm_hour,
T->tm_min,
T->tm_sec
);
}
}
代码如下:
void Reduce(List*list)
{
if(list->size == 0)
{
printf("车库为空\n无法取车\n");
return;
}
else
{
Node *p = (Node*)malloc(sizeof(Node));
struct tm *T;
p = list->top;
printf("车牌号为:%s的车开走了\n",p->date);
printf("进场");
T = localtime(&(p->t));
printf("时间是:%d年%d月%d日%d时%d分%d秒\n",
1900+T->tm_year,
1+T->tm_mon,
T->tm_mday,
T->tm_hour,
T->tm_min,
T->tm_sec
);
list->top = p->next;
free(p);
list->size--;
}
}
代码如下:
void Destroy(List *list)
{
if(list->size == 0)
{
printf("车库为空,无法清空\n");
return;
}
else
{
Node *p = (Node*)malloc(sizeof(Node));
struct tm * T;
p = list->top;
for(;list->size>0;list->size--)
{
p = list->top;
T = localtime(&(p->t));
printf("车牌号为:%s的车开走了\n",p->date);
printf("时间是:%d年%d月%d日%d时%d分%d秒\n",
1900+T->tm_year,
1+T->tm_mon,
T->tm_mday,
T->tm_hour,
T->tm_min,
T->tm_sec
);
list->top = p->next;
free(p);
}
}
}
代码如下:
void Print(List *list)
{
if(list->size == 0)
{
printf("车库为空,无法查看停车情况\n");
return;
}
else
{
Node *p = (Node*)malloc(sizeof(Node));
struct tm *T;
p = list->top;
printf("车库有%d辆车\n",list->size);
for(;p->next != NULL;)
{
T = localtime(&(p->t));
printf("车牌号为:%s ",p->date);
printf("时间是:%d年%d月%d日%d时%d分%d秒\n",
1900+T->tm_year,
1+T->tm_mon,
T->tm_mday,
T->tm_hour,
T->tm_min,
T->tm_sec
);
p = p->next;
}
}
}