隨機隊列 ADT接口 數組實現

Random queue ADT接口 RANDOM.hdom

 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:spa

typedef char Item;

Random queue ADT接口實現 RANDOM.c:code

 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:blog

 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 }
相關文章
相關標籤/搜索