c语言队列的作用,C语言队列
C語言的隊列(queue),是指先進先出(FIFO, First-In-First-Out)的線性表。在具體應(yīng)用中通常用鏈表或者數(shù)組來實現(xiàn)。隊列只允許在后端(稱為rear)進行插入操作,在前端(稱為front)進行刪除操作
單鏈表形式(單鏈隊列使用鏈表作為基本數(shù)據(jù)結(jié)果,因此不存在偽溢出的問題,隊列長度也沒有限制。但插入和讀取的時間代價會比較高)
#include
#include
#include
#include
#include
#define Queue_TYPE int
typedef struct queue_node
{
Queue_TYPE value;
struct queue_node *next;
}QUEUE_NODE;
typedef struct queue
{
QUEUE_NODE *font;
QUEUE_NODE *rear;
}QUEUE;
int is_full(QUEUE *q);
int is_empty(QUEUE *q);
void enqueue(QUEUE *q,Queue_TYPE value);
void dequeue(QUEUE *q);
QUEUE * creat_queue();
void print(QUEUE *q);
void destroy_queue(QUEUE *q);
int main(int argc, const char * argv[]) {
QUEUE *q = creat_queue();
if (q==NULL) {
printf("malloc failed");
}
// creat_queue(q);
enqueue(q,10); enqueue(q,9); enqueue(q,8); enqueue(q,7); enqueue(q,6); enqueue(q,5);
enqueue(q,4); enqueue(q,3); enqueue(q,2); enqueue(q,1); enqueue(q,0);
printf("enqueue壓入數(shù)值后:\n");
print(q);
destroy_queue(q);
return 0;
}
QUEUE * creat_queue()
{
QUEUE *q = (QUEUE *)malloc(sizeof(QUEUE));
if (q==NULL) {
printf("malloc failed");
}
q->font = (QUEUE_NODE *)malloc(sizeof(QUEUE_NODE));
if (q->font == NULL) {
printf("malloc failed");
}
q->rear = q->font;
return q;
}
void enqueue(QUEUE *q,Queue_TYPE value)
{
QUEUE_NODE *newNode = (QUEUE_NODE *)malloc(sizeof(QUEUE_NODE));
if (newNode == NULL) {
printf("malloc failed");
}
newNode->next = NULL;
newNode->value = value;
q->rear->next = newNode;
q->rear = newNode;
}
int is_empty(QUEUE *q)
{
return q->rear == q->font;
}
void print(QUEUE *q)
{
if (is_empty(q)) {
printf("empty");
}
QUEUE_NODE *node = q->font->next;
while (node != NULL) {
printf("%d",node->value);
node = node->next;
}
printf("\n");
}
void dequeue(QUEUE *q)
{
if (is_empty(q)) {
printf("empty");
}
QUEUE_NODE *font = q->font;
q->font = q->font->next;
free(font);
}
void destroy_queue(QUEUE *q)
{
while (!is_empty(q)) {
dequeue(q);
}
}
總結(jié)
以上是生活随笔為你收集整理的c语言队列的作用,C语言队列的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java开发利器Eclipse和IDEA
- 下一篇: M2Det 论文解读