函数和函数声明(队列实验)——数据结构

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int front = 0;
int rear = 0;
/*<2>判断队列空操作******************************/
int IsEmpty()
{
	if (rear == front)
	{
		printf("\n队列空!");
		return 1;
	}
	else
	{
		printf("\n队列非空!");
		return 0;

	}

}
/* 判断队列满操作**********************************/
int IsFull()
{
	if ((rear + 1) % 6 == front)
	{
		printf("\n队列满!");
		return 1;
	}
	else
	{
		printf("\n队列没有满!");
		return 0;
	}
}
/* 入队列操作**********************************/
EnQueue(int q[])
{
	int e, i;
	if (IsFull())
	{
		printf("\n队列满!不能进行入队列操作!");
	}
	else
	{
		printf("\n请输入一个入队列元素: ");
		scanf("%d", &e);
		q[rear] = e;
		rear = (rear + 1) % 6;
	}

	printf("\n队列的结构为: ");
	for (i = 0; i <= 5; i++)
	{
		printf("%d  ", q[i]);
	}

}
/* 出队列操作**********************************/
DeQueue(int q[])
{
	int i;
	if (IsEmpty())
	{
		printf("\n队列空!不能进行出队列操作!");
	}
	else
	{
		printf("\n出队列元素%d", q[front]);
		q[front] = 0;
		front = (front + 1) % 6;
	}

	printf("\n队列的结构为: ");
	for (i = 0; i <= 5; i++)
	{
		printf("%d  ", q[i]);
	}
}
/* 长度操作**********************************/
void Length(int q[])
{
	printf("\n元素个数为:%d ", abs(rear - front + 6) % 6);

}
//***主函数**************************************
main()
{
	int choice;
	int q[6] = { 0 };

	while (1)
	{
		printf("\n++++++++++++++++++++++\n");
		printf("1:EXIT 2:IsEmpty 3:IsFull 4:EnQueue 5:DeQueue 6:Length");
		printf("\n++++++++++++++++++++++\n");
		printf("choice:"); scanf("%d", &choice);
		if (choice == 1)break;
		if (choice == 2)IsEmpty();
		if (choice == 3)IsFull();
		if (choice == 4)EnQueue(q);
		if (choice == 5)DeQueue(q);
		if (choice == 6)Length(q);
	}
}

关于栈的重要代码含义:

front==rear            //判断队列空
front==(rear+1)%M    //判断队列满
rear==(rear+1)%M     //入队列
front==(front+1)%M     //出队列
abs(raar-front+M)%M    //|raar-front+M|%M 循环队列元素个数

关于函数:

这段代码是用C语言编写的,实现了一个简单的队列数据结构。函数声明中是否包含参数取决于函数是否需要接受参数。让我来解释一下:

1. int IsEmpty(): 这个函数不需要接受任何参数。它用于检查队列是否为空。因为它不需要外部数据(如队列本身),所以括号内没有参数。

2. int IsFull(): 与 IsEmpty() 类似,这个函数也不需要接受参数,因为它检查队列是否已满,这可以通过函数内部的 `front` 和 `rear` 的值来确定。

3. EnQueue(int q[]): 这个函数接受一个整数数组 q[] 作为参数,表示队列。它用于向队列添加一个元素,需要访问队列数组才能执行这个操作。

4. DeQueue(int q[]): 与 `EnQueue()` 类似,这个函数也接受队列数组 q[] 作为参数,因为它从队列中移除一个元素,需要修改队列本身。

5. void Length(int q[]): 这个函数同样接受队列数组 q[] 作为参数。它用于计算并打印队列中的元素个数,这需要访问队列数组。

总之,EnQueue() 和 DeQueue() 等函数需要访问队列数据结构,所以它们将队列数组 q[] 作为参数。而 IsEmpty() 和 IsFull() 等函数不需要访问队列数组,因此括号内没有参数。

关于void:

在函数声明中,返回类型指定了函数将返回的数据类型。void 是一种特殊的返回类型,它表示函数不返回任何值。在这种情况下,void 表示 Length 函数不返回任何数据,它只执行某些操作而不产生结果。函数名之前的 void 告诉编译器和其他开发人员,这个函数不会返回任何值,因此不需要使用 return 语句来返回结果。

在 Length 函数中,它计算队列中的元素个数并通过 printf 打印结果,但它并不返回这个结果作为函数值。因此,它的返回类型被声明为 void,以指示它没有返回值。如果不需要从函数中获取任何值,通常将返回类型设置为 void,以明确表明这一点。

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陆小果不会写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值