队列中分配内存的问题。
①typedef int QElemType;
#define MAXQSIZE 100
typedef struct
{
QElemType *base;
int front;
int rear;
}SqQueue;
void InitQueue(SqQueue &Q)
{
Q.base = (QElemType * )malloc(MAXQSIZE * sizeof(QElemType));
if(!Q.base) exit(-1);
Q.front = Q.rear = 0;
}
②
typedef struct queue
{
QElemType base[MAXQSIZE];
int front;
int rear;
}SqQueue;
void InitQueue(SqQueue &Q)
{
Q = (SqQueuePtr)malloc(sizeof(SqQueue));
if (!Q)
{
printf("存储分配失败!\n");
exit(-1);
}
Q.front = Q.rear = 0;
}
正如我标红处:
第一个问题:在什么情况下要在sizeof(SqQueue)前乘上MAXQSIZE?
第二个问题:为什么①中是给Q.base分配内存,而②中是给Q分配内存,这两种有什么区别?