随机队列 ADT接口 数组实现

Random queue ADT接口 RANDOM.h

 1 #include <stdlib.h>
 2 #include "Item.h"
 3 #include <time.h>
 4 #include <stdbool.h>
 5 
 6 void RANDOMQUEUEtailput(int);
 7 void RANDOMQUEUEinit(int);
 8 bool RANDOMQUEUEisFull(void);
 9 bool RANDOMQUEUEisEmpty(void);
10 static int RANDOMQUEUErand(void);
11 void RANDOMQUEUEerror(void);
12 Item RANDOMQUEUEtailget(void);

Item.h:

typedef char Item;

Random queue ADT接口实现 RANDOM.c:

 1 #include "RANDOM.h"
 2 
 3 static Item *Q;
 4 static int N,head,tail,k=0;
 5 
 6 
 7 void RANDOMQUEUEinit(int maxN)
 8 {
 9     Q=malloc(maxN*sizeof(*Q));
10     N=maxN;
11     head=N;
12     tail=0;
13 }
14 void RANDOMQUEUEtailput(int ch)
15 {
16     if(RANDOMQUEUEisFull())
17         RANDOMQUEUEerror();
18     Q[tail]=ch;
19     tail=(tail+1)%N;
20     k++;
21 }
22 Item RANDOMQUEUEtailget(void)
23 {
24     if(RANDOMQUEUEisEmpty())
25         RANDOMQUEUEerror();
26     int i=RANDOMQUEUErand();
27     Item temp=Q[i];
28     head%=N;
29     Q[i]=Q[head];
30     head++;
31     k--;
32     return temp;
33 }
34 bool RANDOMQUEUEisFull(void)
35 {
36     if((tail+1)%N==(head%N))
37         return true;
38     return false;
39 }
40 bool RANDOMQUEUEisEmpty(void)
41 {
42     if(head%N==tail)
43         return true;
44     return false;
45 }
46 static int RANDOMQUEUErand(void)
47 {
48     srand(time(0));
49     return rand()%k;
50 }
51 void RANDOMQUEUEerror(void)
52 {
53     printf("\n内存已满或为空");
54     exit(1);
55 }

主程序 main.c:

 1 #include <stdio.h>
 2 #include "RANDOM.h"
 3 
 4 
 5 int main(void)
 6 {
 7     int N;
 8     printf("输入字符串大小:");
 9     if(scanf("%d", &N))
10         RANDOMQUEUEinit(N);
11     else
12         RANDOMQUEUEerror();
13     getchar();
14     printf("输入字符串\n");
15     while((N=getchar())!='\n')
16     {
17         if(N=='*')
18             {
19                 putchar(RANDOMQUEUEtailget());
20                 //putchar('\n');
21             }
22         else
23             RANDOMQUEUEtailput(N);
24     }
25     
26     return 0;
27 }

 

posted on 2018-05-10 10:29  MACHINE_001  阅读(231)  评论(0编辑  收藏  举报

导航