(c)queue

0011/03/02 Reading time: about 3 mins

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

Search

    Table of Contents