队列
少用一个元素空间:
#include <stdio.h> #include <stdlib.h> #define ERROR 0 typedef struct QNode *PtrToQNode; typedef int ElementType; typedef int Position; struct QNode{ ElementType *Data; Position Front,Rear; int Maxsize; }; typedef PtrToQNode Queue; Queue CreatQueue(int maxsize){ Queue Q = (Queue)malloc(sizeof(struct QNode)); Q->Data = (ElementType*)malloc(maxsize*sizeof(ElementType)); Q->Front = Q->Rear = 0; Q->Maxsize = maxsize; return Q; } bool IsFull(Queue Q){ return ( (Q->Rear+1) %Q->Maxsize == Q->Front ); } bool AddQ(Queue Q,ElementType x){ if(IsFull(Q)){ printf("队列满"); return false; } else{ Q->Rear = (Q->Rear+1)%Q->Maxsize; Q->Data[Q->Rear] =x; printf("加入队列完成:%d\n",x); return true; } } bool IsEmpty(Queue Q){ return (Q->Front == Q->Rear); } ElementType DeleteQ(Queue Q){ if(IsEmpty(Q)){ printf("队列空"); return ERROR; } else { Q->Front = (Q->Front+1)%Q->Maxsize; printf("移除队列完成:%d\n",Q->Data[Q->Front]); return Q->Data[Q->Front]; } } int main(){ PtrToQNode Q; Q = CreatQueue(5); AddQ(Q,1); AddQ(Q,2); AddQ(Q,3); AddQ(Q,4); AddQ(Q,5); printf("==========\n"); DeleteQ(Q); AddQ(Q,6); return 0; }