wht666 发表于 2020-4-9 18:13:21

数据结构入队的代码不是很理解

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct
{
    ElemType *base;
    int front;
    int rear;
}
      //初始化队
void InitQueue(cycleQueue *q)
{
    q->base=(ElemType *)malloc(MAXSIZE*sizeof(ElemType));
    if(!q->base)
      exit(0);
    q->front=q->rear=0;
}
      //循环队列 入队
void InsertQueue(cycleQueue *q,ElemType e)
{
    if((q->rear+1)%MAXSIZE==q->front)//判断是否队满
      return;
    q->base=e;//这里就不理解了,只知道是复制
    q->rear=(q->rear+1)%MAXSIZE;//尾指针往后移一位
}
      //出队
void DeleteQueue(cycleQueue *q,ElemType *e)
{
    if(q->rear==q->front)
      return;
    *e=q->base;
    q->front=(q->front+1)%MAXSIZE;
}
int main()
{
   
    return 0;
}


      //循环队列 入队
void InsertQueue(cycleQueue *q,ElemType e)
{
    if((q->rear+1)%MAXSIZE==q->front)//判断是否队满
      return;
    q->base=e;//这里就不理解了,只知道是复制
    q->rear=(q->rear+1)%MAXSIZE;//尾指针往后移一位
}
现在主要是入队这不是很明白,q->base这个是什么意思,是一个动态数组吗?
小甲鱼哪课讲的是动态数组的相关知识点呀
求大佬解答,谢谢!

BngThea 发表于 2020-4-9 19:01:04

跟动态数组无关,这里就是简单的数组赋值而已啊,q->rear就是一个整形而已

wht666 发表于 2020-4-9 19:47:26

谢谢,我知道了

wht666 发表于 2020-4-9 20:34:25

BngThea 发表于 2020-4-9 19:01
跟动态数组无关,这里就是简单的数组赋值而已啊,q->rear就是一个整形而已

对了,还有一个问题就是为什么那个q->base是一个数组呀,前面结构体里定义的不是一个int *base吗

BngThea 发表于 2020-4-9 21:02:07

wht666 发表于 2020-4-9 20:34
对了,还有一个问题就是为什么那个q->base是一个数组呀,前面结构体里定义的不是一个int *base吗

请看你代码的第14行

兄弟来学习 发表于 2020-4-9 21:04:24

wht666 发表于 2020-4-9 20:34
对了,还有一个问题就是为什么那个q->base是一个数组呀,前面结构体里定义的不是一个int *base吗

*base的作用应该和base[]差不多   数组作为函数的参数相当于指针变量吧
fun(int arr[])=fun(int *arr)

wht666 发表于 2020-4-10 14:06:55

BngThea 发表于 2020-4-9 21:02
请看你代码的第14行

我就是那个分配空间不懂是怎么分配的,所以才问是不是动态数组,我不理解为什么那样就是一个数组了,望大佬解释一下,谢谢

BngThea 发表于 2020-4-10 14:37:00

wht666 发表于 2020-4-10 14:06
我就是那个分配空间不懂是怎么分配的,所以才问是不是动态数组,我不理解为什么那样就是一个数组了,望大 ...

申请了一个空间,可以当做一个数组来使用了
页: [1]
查看完整版本: 数据结构入队的代码不是很理解