队列的疑问
本帖最后由 巴巴鲁 于 2020-10-27 19:59 编辑这个实现队列的功能,我想这样写行不行,时间复杂度都是O(n),而且不会出现”假溢出”
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
int length;
// 初始化队列
void InitQueue(int *array)
{
printf("请输入队列的长度:");
scanf_s("%d", &length);
}
// 建立顺序队列
void CreateQueue(int *array)
{
int i;
printf("请输入%d个数:", length);
for (i = 0; i < length; i++)
{
scanf_s("%d", &array);
}
}
// 入队
void PushQueue(int *array, int e)
{
if (length == MAXSIZE)
{
printf("超出最大长度,程序退出\n");
exit(0);
}
length++;
array = e;
}
// 出队
void PopQueue(int *array)
{
int i;
if (length >= 0)
{
length--;
for (i = 0; i < length; i++)
{
array = array;
}
printf("出队成功\n");
}
else
{
printf("队列为空\n");
}
}
// 判断队列是否为空
void Judge(int *array)
{
if (length >= 0)
{
printf("队列不为空\n");
}
else
{
printf("队列为空\n");
}
}
// 取队头元素
void GetQueue(int *array)
{
if (length >= 0)
{
printf("%d\n", array);
}
else
{
printf("队列为空\n");
}
}
// 遍历队列
void Print(int *array)
{
int i;
for (i = 0; i < length; i++)
{
printf("%d ", array);
}
printf("\n");
}
int main(void)
{
int pro, e;
int array;
while (1)
{
printf("-------------------------------\n");
printf("1.初始化队列 2.建立顺序队列\n");
printf("3.入队 4.出队\n");
printf("5.判断队列是否为空 6.取对头元素\n");
printf("7.遍历队列 0.退出程序\n");
printf("-------------------------------\n");
printf("请输入待执行的功能:");
scanf_s("%d", &pro);
if (pro > 7 || pro < 0)
{
printf("输入有误,请重新输入!\n");
continue;
}
switch (pro)
{
case 0:
printf("成功退出程序,欢迎下次再来^__^\n");
exit(0);
case 1:
InitQueue(array);
break;
case 2:
CreateQueue(array);
break;
case 3:
printf("请输入待入队的元素:");
scanf_s("%d", &e);
PushQueue(array, e);
break;
case 4:
PopQueue(array);
break;
case 5:
Judge(array);
break;
case 6:
GetQueue(array);
break;
case 7:
Print(array);
break;
}
}
return 0;
}
感觉就出队出现了for循环,请问这还是队列吗?也满足先进先出
// 出队
void PopQueue(int *array)
{
int i;
if (length >= 0)
{
length--;
for (i = 0; i < length; i++)
{
array = array;
}
printf("出队成功\n");
}
else
{
printf("队列为空\n");
}
}
没人吗?{:10_250:}
我想问我这样写算不算队列 看上去没啥问题 就是不太算队列,只有一个数组在操作。数据结构应该是存储各样数据的,上个结构体吧 能用吗,能用就是好queue 2269099035 发表于 2020-10-27 23:59
就是不太算队列,只有一个数组在操作。数据结构应该是存储各样数据的,上个结构体吧
意思是存一种数据可以这样用,但多种就要用结构体了? 大神本人 发表于 2020-10-28 15:11
能用吗,能用就是好queue
可以是可以,但和书上不一样,我也不知道对不对 巴巴鲁 发表于 2020-10-28 19:18
意思是存一种数据可以这样用,但多种就要用结构体了?
多个数据,不用结构体,你怎么存{:10_260:}从功能来说,你这算是queue了, 巴巴鲁 发表于 2020-10-28 19:18
可以是可以,但和书上不一样,我也不知道对不对
能用就行
页:
[1]