jQuery火箭图标返回顶部代码

数据结构之队列(循环队列)

由于博主比较懒,所以呢循环队列的原理图如下:

 

代码如下:

 1 #include "stdafx.h"
 2 #include<iostream>
 3 using namespace std;
 4 #define OK 1
 5 #define ERROR 0
 6 #define OVERFLOW -2
 7 #define MAXSIZE 100
 8 typedef int Status;
 9 typedef int QElemType;
10 typedef struct
11 {
12     QElemType *base;
13     int front;
14     int rear;
15 }SqQueue;
16 
17 Status InitQueue(SqQueue &Q)         //初始化队列
18 {
19     Q.base = new QElemType[MAXSIZE];
20     if (!Q.base)
21         exit(OVERFLOW);
22     Q.front = Q.rear = 0;
23     return OK;
24 }
25 
26 Status QueueLength(SqQueue Q)        //求队列的长度
27 {
28     return (Q.rear - Q.front + MAXSIZE) % MAXSIZE;
29 }
30 
31 Status EnQueue(SqQueue &Q, QElemType e) //进队
32 {
33     if ((Q.rear + 1) % MAXSIZE == Q.front)
34         return ERROR;
35     Q.base[Q.rear] = e;
36     Q.rear = (Q.rear + 1) % MAXSIZE;
37     return OK;
38 }
39 
40 Status DeQueue(SqQueue &Q, QElemType &e)//出队
41 {
42     if (Q.front == Q.rear)
43         return ERROR;
44     e = Q.base[Q.front];
45     Q.front = (Q.front + 1) % MAXSIZE;
46     return OK;
47 }
48 
49 QElemType GetHead(SqQueue Q)         //取队头元素 
50 {
51     if (Q.front != Q.rear)
52         return Q.base[Q.front];
53 }
54 
55 Status Visit(SqQueue Q)              //相当于输出
56 {
57     if (Q.rear == Q.front)
58     {
59         cout << "空队列" << endl;
60         return ERROR;
61     }
62     while (Q.front != Q.rear)
63     {
64         cout << Q.base[Q.front] << " ";
65         Q.front = (Q.front + 1) % MAXSIZE;
66     }
67     cout << endl;
68     return OK;
69 }
70 int main()
71 {
72     SqQueue Q;
73     int e;
74     InitQueue(Q);
75     EnQueue(Q, 1);
76     EnQueue(Q, 3);
77     EnQueue(Q, 5);
78     EnQueue(Q, 7);
79     EnQueue(Q, 9);
80     Visit(Q);
81     cout << "队列的长度为:";
82     cout << QueueLength(Q) << endl;
83     cout << "循环队列的队头元素为:";
84     cout << GetHead(Q) << endl;
85     DeQueue(Q, e);
86     EnQueue(Q, 11);
87     Visit(Q);
88     cout << "现在队列的长度为:";
89     cout << QueueLength(Q) << endl;
90     cout << "现在循环队列的队头元素为:";
91     cout << GetHead(Q) << endl;
92     return 0;
93 
94 }

 

输出结果:

 

posted @ 2018-04-15 16:39  迷途纸鸢  阅读(414)  评论(0编辑  收藏  举报