循环数组队列
//?? 隊列的數組實現
#include <cstdio>
#include <cstdlib>
//#define _OJ_
#define maxsize 5
typedef struct Lnode
{
??? int front;
??? int rear;
??? int *elem;
} deque, *Deque;
void
creat_deque(Deque q)
{
??? q->elem = (int*) malloc (maxsize * sizeof(int));
??? q->front = q->rear = 0;
}
int
isfull(Deque q)
{
??? if((q->rear + 1) % maxsize == q->front)
??????? return 1;
??? else
??????? return 0;
}
int
isempty(Deque q)
{
??? if(q->front == q->rear)
??????? return 1;
??? else
??????? return 0;
}
int
deque_size(Deque q)
{
??? return (q->front - q->rear + maxsize) % maxsize;
}
void
endeque(Deque q)
{
??? int x;
??? scanf("%d", &x);
??? q->elem[q->rear] = x;printf("%d\n", q->rear);
??? q->rear = (q->rear + 1) % maxsize;
}
int
del_deque(Deque q)
{
??? int e;
??? e = q->elem[q->front];
??? q->front = (q->front + 1) % maxsize;
??? return e;
}
int main(int argc, char const *argv[]) {
#ifndef _OJ_? //ONLINE_JUDGE
??? freopen("input.txt", "r", stdin);
#endif
??? Deque q;
??? creat_deque(q);
??? printf("isempty == %d\n", isempty(q));
??? printf("size == %d\n", deque_size(q));
??? printf("full == %d\n", isfull(q));
??? int n, i;
??? n = 3;
??? do
??? {
??????? endeque(q);
??? }
??? while (!isfull(q)) ;
??? while (!isempty(q)) {
????? printf("del == %d\n", del_deque(q));
??? }
//值得注意的是此數組只可以存入 maxsize -1 個數據
??? return 0;
}
轉載于:https://www.cnblogs.com/airfand/p/4925882.html
總結
- 上一篇: (三)页面之间的参数传递
- 下一篇: android学习之Service