设为首页 加入收藏

TOP

随机队列 ADT接口 数组实现
2018-10-21 16:08:50 】 浏览:53
Tags:随机 队列 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 }

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇模拟处理机作业调度---短作业优先.. 下一篇C语言关键字分类整理

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目