这里是简易队列源码,数组形式实现
队列内部实现
typedef struct Quneuek
{
int *pBase;
int front;
int rear;
}QUNEUEK, *PQUNEUEK;
void initQuneuek(PQUNEUEK que);
bool pushQunenek(PQUNEUEK que, int value);
bool popQuenek(PQUNEUEK que);
void travelQuenek(PQUNEUEK que);
bool fullQuenek(PQUNEUEK que);
bool emptyQuenek(PQUNEUEK que);
int main()
{
QUNEUEK que;
initQuneuek(&que);
fullQuenek(&que);
emptyQuenek(&que);
pushQunenek(&que, 23);
pushQunenek(&que, 123);
pushQunenek(&que, 233);
pushQunenek(&que, 3);
travelQuenek(&que);
popQuenek(&que);
travelQuenek(&que);
return 0;
}
队列内部实现
void initQuneuek(PQUNEUEK que)
{
que->pBase = (int *)malloc(sizeof(int)*6);
que->front = 0;
que->rear = 0;
}
bool pushQunenek(PQUNEUEK que, int value)
{
if (fullQuenek(que)) return false;
que->pBase[que->rear] = value;
que->rear = ( que->rear +1) % 6;
return true;
}
bool popQuenek(PQUNEUEK que)
{
if (emptyQuenek(que)) return false;
int value = que->pBase[que->front];
que->front = (que->front+1) % 6;
return true;
}
void travelQuenek(PQUNEUEK que)
{
int i = que->front;
while (i != que->rear) {
printf("%d ",que->pBase[i]);
i = (i+1) %6;
}
printf("\n");
}
bool fullQuenek(PQUNEUEK que)
{
int a = (que->rear + 1) % 6;
int b = que->front;
if (a == b) {
printf("队列是满的\n");
return true;
}
return false;
}
bool emptyQuenek(PQUNEUEK que)
{
int a = que->front;
int b = que->rear;
if (a == b) {
printf("队列是空\n");
return true;
}
return false;
}