标签:style blog color io ar sp div on c
#include<stdio.h> #include<stdlib.h> typedef char QEleType; typedef int Status; #define OK 1 #define ERROR 0 #define OVERLOW -2 #define TRUE 1 #define FALSE 0 struct queueNode{//链式队列的节点类型 QEleType data; struct queueNode *next; }queue; typedef struct{ struct queueNode *front; struct queueNode *rear; }LinkQueue;//链式队列类型 Status InitLinkQueue(LinkQueue &Q){ //初始化创建空队列Q Q.front=Q.rear=(struct queueNode *)malloc(sizeof(struct queueNode)); //获取头结点,并使Q.front与Q.rear均指向该头结点 if(!Q.front)return OVERLOW;//存储空间分配失败 Q.front->next=NULL; return OK; } Status queueIsEmpty(LinkQueue &Q){ if(Q.front==Q.rear) return TRUE;//队列为空 else return FALSE;//队列非空 } Status insertQueue(LinkQueue &Q,QEleType &e){ //在链式队列Q的队尾端插入元素e; struct queueNode *p; p=(struct queueNode *)malloc(sizeof(struct queueNode));//分配新节点 if(!p)return OVERLOW;//存储空间分配失败 p->data=e;p->next=NULL; Q.rear->next=p;//在队尾插入新节点 Q.rear=p; //rear指向新的队尾节点 return OK; } Status deleteQueue(LinkQueue &Q,QEleType &e){ //在链式队列Q的队尾端插入元素e; struct queueNode *p; if(Q.front==Q.rear)return ERROR;//队空则操作出错 p=Q.front->next; e=p->data; Q.front->next=p->next; if(p==Q.rear) //p结点即是队头结点,又是队尾结点时, Q.rear=Q.front;//使rear指向链表头结点 free(p); return OK; } Status getFront(LinkQueue &Q,QEleType &e){ //取队列Q的队头元素值 if(Q.front==Q.rear)return ERROR;//队空,则操作出错 e=Q.front->next->data; return OK; } int main() { LinkQueue Q; char e; InitLinkQueue(Q); queueIsEmpty(Q); insertQueue(Q,e); deleteQueue(Q,e); getFront(Q,e); return 0; }
标签:style blog color io ar sp div on c
原文地址:http://www.cnblogs.com/leijiangtao/p/3995483.html