1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
#include "stdlib.h"
#define Element int
struct ; typedef struct *Queue;
int IsEmpty(Queue Q); int Isfull(Queue Q); Queue creat(int Maxsize); void DisposeQueue(Queue Q); void MakeEmpty(Queue Q); void EnQueue(Element X,Queue Q); void DeQueue(Queue Q); Element ReturnQueue(Queue Q);
#define Minsize (5)
struct { int capacity; int front; int rear; int size; Element *Array; };
int IsEmpty(Queue Q) { return Q->size==0; }
int IsFull(Queue Q) { if(Q->size==Q->capacity) return 0; else return 1; }
Queue creat(int Maxsize) { Queue Q; Q=(Queue)malloc(sizeof(struct QueueRecord)); MakeEmpty(Q); Q->capacity=Maxsize; Q->Array=(Element*)malloc(sizeof(Element)*Maxsize); return Q; }
void DisposeQueue(Queue Q) { if(!IsEmpty(Q)) { free(Q->Array); free(Q); } }
void MakeEmpty(Queue Q) { Q->size=0; Q->front=1; Q->rear=0; }
int Succ(int Value,Queue Q) { if(Value==Q->capacity) Value=0; else Value++; return Value; }
void EnQueue(Element X,Queue Q) { if(IsFull(Q)==0) printf("Queue has been full!n"); else { Q->size++; Q->rear=Succ(Q->rear,Q); Q->Array[Q->rear]=X; } }
void DeQueue(Queue Q) { if(IsFull(Q)==0) printf("Queue has been full!n"); else { Q->size--; Q->front=Succ(Q->front,Q); } }
Element ReturnQueue(Queue Q) { return Q->Array[Q->front]; }
int main() { Queue Q; int n; scanf("%d",&n); Q=creat(n); int x; int i; int temp; EnQueue(3,Q); EnQueue(4,Q); temp=ReturnQueue(Q); printf("%dn",temp); DeQueue(Q); temp=ReturnQueue(Q); printf("%dn",temp); return 0; } c
|
近期评论