C语言数据结构-队列Queue
标签:show ini overflow typedef void free err erro while
#ifndef __LINKQUEUE_H__
#define __LINKQUEUE_H__
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLF -1
#define OVERFLOW -2
typedef int Status;
typedef int QElemType;
typedef struct QNode {
QElemType data;
struct QNode *next;
}QNode, *QueuePtr;
typedef struct {
QueuePtr front;
QueuePtr rear;
}LinkQueue;
#endif
#include"LinkQueue.h"
#include
#include
Status InitQueue(LinkQueue &Q) {
Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
if(!Q.front) {
exit(OVERFLOW);
}
Q.front -> next = NULL;
return OK;
}
Status EnQueue(LinkQueue &Q, QElemType e) {
QNode *p = (QueuePtr)malloc(sizeof(QNode));
if(!p) {
exit(OVERFLOW);
}
p -> data = e;
p -> next = NULL;
Q.rear -> next = p;
Q.rear = p;
return OK;
}
Status DeQueue(LinkQueue &Q, QElemType e) {
if(Q.front == Q.rear) {
return ERROR;
}
QueuePtr p = Q.front -> next;
e = p -> data;
Q.front -> next = p -> next;
if(Q.rear == p) {
Q.rear = Q.front;
}
free(p);
return OK;
}
void show(LinkQueue Q) {
QueuePtr n = Q.front -> next;
printf(" ============ Q ============\n");
while(n) {
printf("data = %d\n", n -> data);
n = n ->next;
}
}
int main() {
LinkQueue Q;
InitQueue(Q);
EnQueue(Q, 1);
EnQueue(Q, 2);
EnQueue(Q, 3);
show(Q);
DeQueue(Q, 3);
DeQueue(Q, 3);
show(Q);
return OK;
}
C语言数据结构-队列Queue
标签:show ini overflow typedef void free err erro while
原文地址:https://www.cnblogs.com/maduar/p/13205656.html
评论