#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