在前面声明一个initstack函数,就给这么一小块代码前面怎么写的都不知道怎么帮你写
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdlib.h>
#include <stack>
#define initstacksize 5
#define QElemType char
#define SElemType char
int n, m;
typedef struct QNode
{
QElemType data[500];
QNode *next;
} QueuePtr; //队列
typedef struct
{
QueuePtr *rear;
QueuePtr *front;
} linkQueue; //队列头尾指针
typedef struct
{
SElemType Sqdata[500];
} SqPtr; //栈存放字符串
typedef struct
{
SqPtr *base;
SqPtr *top;
int stacksize;
} SqStack; //栈
void InitStack(SqStack &s)
{
s.stacksize = initstacksize;
s.base = s.top = new SqPtr();
}
void initQueue(linkQueue &q)
{
q.front = q.rear = new QueuePtr();
}
int menu1(int num)
{
printf("------------------------------\n");
printf(" 停车场模拟管理程序\n\n");
printf(" 1.汽车进入停车场\n");
printf(" 2.汽车离开停车场\n");
printf(" 3.查看停车场\n");
printf(" 4.退出\n\n");
printf("------------------------------\n\n");
printf("输入执行编号:");
scanf("%d", &num);
while (num > 4 || num < 1)
{
printf("输入错误,请重新输入:");
scanf("%d", &num);
}
return (num);
}
//2.离开停车场菜单函数
int menu2(int num)
{
printf("------------------------------\n");
printf(" 停车场模拟管理程序\n\n");
printf(" 1.停车区车辆离开\n");
printf(" 2.候车区车辆离开\n");
printf(" 3.返回上一界面\n\n");
printf("------------------------------\n\n");
printf("输入执行编号:");
scanf("%d", &num);
while (num > 3 || num < 1)
{
printf("输入错误,请重新输入:");
scanf("%d", &num);
}
return (num);
}
//3.进入停车场函数
void intoparking(SqStack &L, linkQueue &Q, char number[]) //进入停车区
{
QueuePtr *P;
if (L.top - L.base < L.stacksize)
{
strcpy(L.top->Sqdata, number);
L.top++;
}
else
{
P = (QueuePtr *)malloc(sizeof(QueuePtr));
if (!P)
{
printf("存储分配失败\n");
return;
}
strcpy(P->data, number);
P->next = NULL;
Q.rear->next = P;
Q.rear = P;
}
}
//4.离开停车区函数
void outparking1(SqStack &L, char number[]) //停车区车离开
{
int i = 0, j;
SqPtr a[500];
SqPtr *p;
p = L.top;
while (strcmp(p->Sqdata, number) && p != L.base)
{
p--;
i++;
}
system("cls");
if (strcmp(p->Sqdata, number) && p == L.base)
{
printf("\n\n 未在停车区找到该车\n");
return;
}
printf("\n");
for (j = 0; j < i; j++)
{
strcpy(a[j].Sqdata, L.top->Sqdata);
L.top--;
printf("%s车辆退出停车区\n", L.top->Sqdata);
}
printf("\n");
for (i = j - 1; i > 0; i--)
{
strcpy(L.top->Sqdata, a[i].Sqdata);
printf("%s车辆进入停车区\n", a[i].Sqdata);
L.top++;
}
printf("\n");
}
//5.离开候车区函数
void outparking2(linkQueue &Q, char number[]) //候车区车离开
{
QueuePtr *p, *q;
p = Q.front;
while (strcmp(p->data, number) && p != Q.rear)
{
q = p;
p = p->next;
}
system("cls");
if (strcmp(p->data, number) && p == Q.rear)
{
printf("\n\n 未在候车区找到该车\n");
return;
}
if (p == Q.rear)
{
Q.rear = q;
free(p);
}
else
{
q->next = p->next;
free(p);
}
}
//6.如果停车区有空候车区车辆自动进入停车区函数
void waiterintoparking(linkQueue &Q, SqStack &L) //候车区进入停车区
{
QueuePtr *p;
if ((L.top - L.base == L.stacksize) || (Q.front == Q.rear)) //栈满或者队列为空
return;
else
{
while (L.top - L.base < L.stacksize)
{
p = Q.front->next;
strcpy(L.top->Sqdata, p->data);
printf("%s车辆从候车区进入停车区\n", p->data);
L.top++;
Q.front->next = p->next;
free(p);
if (Q.rear == p)
Q.rear = Q.front;
}
}
}
//7.查看停车场函数
void displaypark(SqStack L, linkQueue Q) //查看车辆
{
char a[500];
printf("\n\n");
if (L.top - L.base == L.stacksize)
{
printf("停车场已满,停车场从外到里分别为:");
while (L.top > L.base)
{
L.top--;
strcpy(a, L.top->Sqdata);
printf("%s ", a);
}
printf("\n");
if (Q.front == Q.rear)
printf("候车区为空\n");
else
{
printf("候车区从外到里分别为:");
while (Q.front != Q.rear)
{
Q.front = Q.front->next;
strcpy(a, Q.front->data);
printf("%s ", a);
}
printf("\n");
}
}
else
{
if (L.top == L.base)
{
printf("停车场为空\n");
return;
}
else
{
printf("停车场未满,停车场从外到里分别为:");
while (L.top > L.base)
{
L.top--;
strcpy(a, L.top->Sqdata);
printf("%s ", a);
}
}
printf("\n");
}
}
//8.主函数
int main()
{
int b = 1;
char number[10];
SqStack L;
linkQueue Q;
InitStack(L);
printf("停车区初始化成功\n");
initQueue(Q);
printf("候车区初始化成功\n\n");
while (b)
{
switch (menu1(n))
{
case 1:
printf("请输入车牌号并以'#'结束\n");
scanf("%s", number);
while (strcmp(number, "#"))
{
intoparking(L, Q, number);
scanf("%s", number);
}
system("cls");
printf("\n 车辆入库成功\n");
b = 1;
break;
case 2:
system("cls");
switch (menu2(m))
{
case 1:
printf("请输入停车区需要离开的车辆编号:");
scanf("%s", number);
printf("\n");
outparking1(L, number);
waiterintoparking(Q, L);
break;
case 2:
printf("请输入候车区需要离开的车辆编号:");
scanf("%s", number);
outparking2(Q, number);
break;
default:
system("cls");
break;
}
break;
case 3:
system("cls");
displaypark(L, Q);
b = 1;
break;
default:
printf("谢谢使用,再见\n");
b = 0;
break;
}
}
return 0;
}
加急加急,球球大佬们了。
在前面写一个initstack函数就行了啊
有没有大神直接写一下
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#include<stdlib.h>
#include<stack>
#define initstacksize 5
#define QElemType char
#define SElemType char
int n,m;
typedef struct QNode{
QElemType data[10];
QNode *next;
}QueuePtr;//队列
typedef struct{
QueuePtr *rear;
QueuePtr *front;
}linkQueue;//队列头尾指针
typedef struct{
SElemType Sqdata[10];
}SqPtr;//栈存放字符串
typedef struct{
SqPtr *base;
SqPtr *top;
int stacksize;
}SqStack;//栈
int menu1(int num)
{
printf("------------------------------\n");
printf(" 停车场模拟管理程序\n\n");
printf(" 1.汽车进入停车场\n");
printf(" 2.汽车离开停车场\n");
printf(" 3.查看停车场\n");
printf(" 4.退出\n\n");
printf("------------------------------\n\n");
printf("输入执行编号:");
scanf("%d",&num);
while(num>4||num<1)
{printf("输入错误,请重新输入:");
scanf("%d",&num);}
return (num);
}
//2.离开停车场菜单函数
int menu2(int num)
{
printf("------------------------------\n");
printf(" 停车场模拟管理程序\n\n");
printf(" 1.停车区车辆离开\n");
printf(" 2.候车区车辆离开\n");
printf(" 3.返回上一界面\n\n");
printf("------------------------------\n\n");
printf("输入执行编号:");
scanf("%d",&num);
while(num>3||num<1)
{printf("输入错误,请重新输入:");
scanf("%d",&num);}
return (num);
}
//3.进入停车场函数
void intoparking(SqStack &L,linkQueue &Q,char number[])//进入停车区
{
QueuePtr *P;
if(L.top-L.base<L.stacksize)
{strcpy(L.top->Sqdata,number);
L.top++;}
else
{P=(QueuePtr *)malloc(sizeof(QueuePtr));
if(!P)
{printf("存储分配失败\n");
return;}
strcpy(P->data,number);
P->next=NULL;
Q.rear->next=P;
Q.rear=P;}
}
//4.离开停车区函数
void outparking1(SqStack &L,char number[])//停车区车离开
{
int i=0,j;
SqPtr a[5];
SqPtr *p;
p=L.top;
while(strcmp(p->Sqdata,number)&&p!=L.base)
{p--;
i++;
}
system("cls");
if(strcmp(p->Sqdata,number)&&p==L.base)
{printf("\n\n 未在停车区找到该车\n");
return;}
printf("\n");
for(j=0;j<i;j++)
{strcpy(a[j].Sqdata,L.top->Sqdata);
L.top--;
printf("%s车辆退出停车区\n",L.top->Sqdata);}
printf("\n");
for(i=j-1;i>0;i--)
{strcpy(L.top->Sqdata,a[i].Sqdata);
printf("%s车辆进入停车区\n",a[i].Sqdata);
L.top++;}
printf("\n");
}
//5.离开候车区函数
void outparking2(linkQueue &Q,char number[])//候车区车离开
{
QueuePtr *p,*q;
p=Q.front;
while(strcmp(p->data,number)&&p!=Q.rear)
{
q=p;
p=p->next;
}
system("cls");
if(strcmp(p->data,number)&&p==Q.rear)
{printf("\n\n 未在候车区找到该车\n");
return;}
if(p==Q.rear)
{ Q.rear=q;
free(p);
}
else
{ q->next=p->next;
free(p);
}
}
//6.如果停车区有空候车区车辆自动进入停车区函数
void waiterintoparking(linkQueue &Q,SqStack &L)//候车区进入停车区
{
QueuePtr *p;
if((L.top-L.base==L.stacksize)||(Q.front==Q.rear))//栈满或者队列为空
return;
else
{while(L.top-L.base<L.stacksize)
{ p=Q.front->next;
strcpy(L.top->Sqdata,p->data);
printf("%s车辆从候车区进入停车区\n",p->data);
L.top++;
Q.front->next=p->next;
free(p);
if(Q.rear==p)
Q.rear=Q.front;
}
}
}
//7.查看停车场函数
void displaypark(SqStack L,linkQueue Q)//查看车辆
{
char a[10];
printf("\n\n");
if(L.top-L.base==L.stacksize)
{printf("停车场已满,停车场从外到里分别为:");
while(L.top>L.base)
{
L.top--;
strcpy(a,L.top->Sqdata);
printf("%s ",a);}
printf("\n");
if(Q.front==Q.rear)
printf("候车区为空\n");
else
{
printf("候车区从外到里分别为:");
while(Q.front!=Q.rear)
{
Q.front=Q.front->next;
strcpy(a,Q.front->data);
printf("%s ",a);}
printf("\n");
}
}
else
{
if(L.top==L.base)
{printf("停车场为空\n");
return;}
else
{printf("停车场未满,停车场从外到里分别为:");
while(L.top>L.base)
{
L.top--;
strcpy(a,L.top->Sqdata);
printf("%s ",a);}}
printf("\n");}
}
//8.主函数
int main ()
{
int b=1;
char number[10];
SqStack L;
linkQueue Q;
InitStack(L);
printf("停车区初始化成功\n");
initQueue(Q);
printf("候车区初始化成功\n\n");
while(b)
{switch(menu1(n))
{case 1:
printf("请输入车牌号并以'#'结束\n");
scanf("%s",number);
while(strcmp(number,"#"))
{intoparking(L,Q,number);
scanf("%s",number);}
system("cls");
printf("\n 车辆入库成功\n");
b=1;
break;
case 2:
system("cls");
switch(menu2(m))
{case 1:
printf("请输入停车区需要离开的车辆编号:");
scanf("%s",number);
printf("\n");
outparking1(L,number);
waiterintoparking(Q,L);
break;
case 2:
printf("请输入候车区需要离开的车辆编号:");
scanf("%s",number);
outparking2(Q,number);
break;
default:
system("cls");
break;}
break;
case 3:
system("cls");
displaypark(L,Q);
b=1;
break;
default:
printf("谢谢使用,再见\n");
b=0;
break;
}}
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m