顺序队列用数组来存储,空间大小是固定的,一些情况下会有不方便
无法估计所用队列长度,宜采用链队列
队头指针,队尾指针(队列用链表表示需要两个指针)
进在尾结点,
出在头结点(front的next改下就行了)
销毁算法(销毁链队列)
算法思想:从队头结点开始,依次释放所有结点。
Status DestoryQueue (LinkQueue &Q) { while(Q.front) { P = Q.front->next; free(Q.front); Q.front = p; } return ok; }
将元素e入队
p = (QueuePtr)malloc(sizeof(QNode)); if(!p) exit(OVERFLOW); p->data = e; p->next = NULL; Q.rear->next = p; Q.rear = p; return OK;
链队列出队
if (Q.front == Q.rear) return ERROR; p = Q.front->next; e = p->data; Q.front->next = p->next; if (Q.rear == p) Q.rear = Q.front; delete p; // c语言是:free(p); return OK;
if (Q.front == Q.rear) return ERROR; e = Q.front->next->data; return OK;