DEV中怎么声明initstack函数

 

在前面声明一个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