#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} LinkNode;
typedef struct {
LinkNode *front, *rear;
} LinkQueue;
// 带头结点
int InitQueue(LinkQueue *q) {
q->front = q->rear = (LinkNode *)malloc(sizeof(LinkNode));
if (q->front == NULL) return -1;
q->front->next = NULL;
return 1;
}
// 带头结点
int EnQueue(LinkQueue *q, int e) {
LinkNode *s = (LinkNode *)malloc(sizeof(LinkNode));
if (s == NULL) return -1;
q->rear->next = s;
q->rear = s;
s->next = NULL;
s->data = e;
return 1;
}
// 带头结点
int DeQueue(LinkQueue *q, int *e) {
if (q->front == q->rear) return -1;
LinkNode *p = q->front->next;
*e = p->data;
q->front->next = p->next;
if (q->rear == p) {
q->rear = q->front;
}
free(p);
return 1;
}
// 不带头结点
int InitQueue1(LinkQueue *q) {
q->front = q->rear = NULL;
return 1;
}
// 不带头结点
int EnQueue1(LinkQueue *q, int e) {
LinkNode *s = (LinkNode *)malloc(sizeof(LinkNode));
if (s == NULL) return -1;
s->next = NULL;
s->data = e;
if (q->front == NULL) {
q->front = s;
q->rear = s;
} else {
q->rear->next = s;
q->rear = s;
}
return 1;
}
// 不带头结点
int DeQueue1(LinkQueue *q, int *e) {
if (q->front == NULL) return -1;
LinkNode *p = q->front;
q->front = p->next;
*e = p->data;
if (q->rear == p) {
q->front = NULL;
q->rear = NULL;
}
free(p);
return 1;
}
// 带头结点
int Empty(LinkQueue q) {
if (q.front == q.rear) return 1;
else return -1;
}
// 不带头结点
int Emptyq(LinkQueue q) {
if (q.front == NULL) return 1;
else return -1;
}
int main() {
LinkQueue q;
InitQueue(&q);
return 0;
}
网友评论