C链式队列实现

来源:互联网 发布:win7办公软件下载 编辑:程序博客网 时间:2024/06/05 04:36
#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;}


0 0
原创粉丝点击