C链式队列实现

    xiaoxiao2021-03-25  144

    #ifndef _LINKQUEUE_HEAD_H #define _LINKQUEUE_HEAD_H #include "head.h" typedef struct{ LinkNode *front; LinkNode *rear; }LinkQueue; extern LinkQueue *create_empty_linkqueue(); extern int is_empty_linkqueue(LinkQueue *q); extern int enter_linkqueue(LinkQueue *q,datatype data); extern datatype delete_linkqueue(LinkQueue *q); #endif #include <stdio.h> #include <stdlib.h> #include "linkqueue.h" LinkQueue *create_empty_linkqueue() { LinkNode *head; LinkQueue *q; head = (LinkNode *)malloc(sizeof(LinkNode)); if(head == NULL){ printf("Fail to create empty linkqueue!\n"); return NULL; } head->next = NULL; q = (LinkQueue *)malloc(sizeof(LinkQueue)); if(q == NULL){ printf("Fail to create empty linkqueue!\n"); return NULL; } q->front = head; q->rear = head; return q; } int is_empty_linkqueue(LinkQueue *q) { return q->front == q->rear ? 1 : 0; } int enter_linkqueue(LinkQueue *q,datatype data) { LinkNode *tmp; tmp = (LinkNode *)malloc(sizeof(LinkNode)); if(tmp == NULL){ printf("Fail to enter linkqueu!\n"); return -1; } tmp->data = data; q->rear->next = tmp; q->rear = tmp; return 0; } datatype delete_linkqueue(LinkQueue *q) { LinkNode *tmp; if(is_empty_linkqueue(q)){ printf("The linkqueue is empty!\n"); return -1; } tmp = q->front; q->front = tmp->next; free(tmp); return q->front->data; }
    转载请注明原文地址: https://ju.6miu.com/read-5920.html

    最新回复(0)