1. Abstract
队列是操作受限的线性表,相较于堆栈的后进先出,元素在队列的一端插入,在另一端删除(先进先出)

队列同样可以根据储存形式的不同,分为顺序队列和链队列
2. 链队列

typedef char ElemType;
typedef struct Node{
ElemType data;
struct Node *next;
}LinkQueueNode;
typedef struct{
LinkQueueNode *front;
LinkQueueNode *rear;
}LinkQueue;
void InitQueue(LinkQueue *Q){
Q->front = (LinkQueueNode *)malloc(sizeof(LinkQueueNode));
Q->rear = Q->front;
(Q->front)->next = NULL;
}
void EnterQueue(LinkQueue *Q, ElemType x){
LinkQueueNode *newNode;
newNode = (LinkQueueNode *)malloc(sizeof(LinkQueueNode));
newNode->data = x;
newNode->next = NULL;
(Q->rear)->next = newNode;
Q->rear = newNode;
}
void DeleteQueue(LinkQueue *Q, ElemType *x){
LinkQueueNode *p;
p = (Q->front)->next;
(Q->front)->next = p->next;
*x = p->data;
free(p);
}
void main(){
LinkQueue lq;
InitQueue(&lq);
EnterQueue(&lq, 'a');
EnterQueue(&lq, 'b');
printf("%c", (lq.rear)->data);
}
Document Information
- Author: Zhekai Li
- Link: https://zhekaili.github.io/0011/03/02/(C)Queue/
- Copyright: 自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)