序言
顺序队列是通过链表的方式来实现
结构示意图
顺序队列结构
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