七、顺序队列

序言

顺序队列是通过链表的方式来实现

结构示意图

顺序队列结构


typedef struct QUEUE_LIST {
    Node *pFront;
    Node *pTail;
} *PQUEUE_LIST, QUEUE_LIST;

顺序队列常用操作


void init_queue_list(PQUEUE_LIST *pqueue_list);

void en_quque_list(PQUEUE_LIST pqueue_list, ELEMENT *data);

void de_queue_list(PQUEUE_LIST pqueue_list, ELEMENT *data);

bool is_empty_queue_list(PQUEUE_LIST pqueue_list);

void clear_queue_list(PQUEUE_LIST pqueue_list);

void destroy_queue_list(PQUEUE_LIST *pqueue_list);

void print_queue_list(PQUEUE_LIST pqueue_list);

顺序队列实现


void init_stack_list(PSTACK_LIST *pstack_list) {
    *pstack_list = malloc(sizeof(pstack_list));
    (*pstack_list)->pFront = NULL;
    (*pstack_list)->pTail = NULL;
};

void push_stack_list(PSTACK_LIST pstack_list, ELEMENT *data) {
    Node *pInsertNode = malloc(sizeof(Node));
    pInsertNode->data = *data;
    pInsertNode->next = pstack_list->pFront;
    pstack_list->pFront = pInsertNode;
};

void pop_stack_list(PSTACK_LIST pstack_list, ELEMENT *data) {
    PNode delNode = pstack_list->pFront;
    pstack_list->pFront = pstack_list->pFront->next;
    *data = delNode->data;
    free(delNode);
};

bool is_empty_stack_list(PSTACK_LIST pstack_list) {
    if (pstack_list->pFront == NULL) {
        return true;
    }
    return false;
};

void clear_stack_list(PSTACK_LIST pstack_list) {
    while (!is_empty_stack_list(pstack_list)) {
        int a = 0;
        pop_stack_list(pstack_list, &a);
    }
}


void destroy_stack_list(PSTACK_LIST *pstack_list) {
    clear_stack_list(*pstack_list);
    free(*pstack_list);
    printf("stack list has been destroyed\n");
}


void print_stack_list(PSTACK_LIST pstack_list) {
    while (!is_empty_stack_list(pstack_list)) {
        int a = 0;
        pop_stack_list(pstack_list, &a);
        printf("%d\n", a);
    }
};

github:https://github.com/HumorSmith/DataStructure/tree/master/queue

猜你喜欢

转载自blog.csdn.net/aa375809600/article/details/72859685