Random queue ADT接口 RANDOM.h

 #include <stdlib.h>
#include "Item.h"
#include <time.h>
#include <stdbool.h> void RANDOMQUEUEtailput(int);
void RANDOMQUEUEinit(int);
bool RANDOMQUEUEisFull(void);
bool RANDOMQUEUEisEmpty(void);
static int RANDOMQUEUErand(void);
void RANDOMQUEUEerror(void);
Item RANDOMQUEUEtailget(void);

Item.h:

typedef char Item;

Random queue ADT接口实现 RANDOM.c:

 #include "RANDOM.h"

 static Item *Q;
static int N,head,tail,k=; void RANDOMQUEUEinit(int maxN)
{
Q=malloc(maxN*sizeof(*Q));
N=maxN;
head=N;
tail=;
}
void RANDOMQUEUEtailput(int ch)
{
if(RANDOMQUEUEisFull())
RANDOMQUEUEerror();
Q[tail]=ch;
tail=(tail+)%N;
k++;
}
Item RANDOMQUEUEtailget(void)
{
if(RANDOMQUEUEisEmpty())
RANDOMQUEUEerror();
int i=RANDOMQUEUErand();
Item temp=Q[i];
head%=N;
Q[i]=Q[head];
head++;
k--;
return temp;
}
bool RANDOMQUEUEisFull(void)
{
if((tail+)%N==(head%N))
return true;
return false;
}
bool RANDOMQUEUEisEmpty(void)
{
if(head%N==tail)
return true;
return false;
}
static int RANDOMQUEUErand(void)
{
srand(time());
return rand()%k;
}
void RANDOMQUEUEerror(void)
{
printf("\n内存已满或为空");
exit();
}

主程序 main.c:

 #include <stdio.h>
#include "RANDOM.h" int main(void)
{
int N;
printf("输入字符串大小:");
if(scanf("%d", &N))
RANDOMQUEUEinit(N);
else
RANDOMQUEUEerror();
getchar();
printf("输入字符串\n");
while((N=getchar())!='\n')
{
if(N=='*')
{
putchar(RANDOMQUEUEtailget());
//putchar('\n');
}
else
RANDOMQUEUEtailput(N);
} return ;
}

最新文章

  1. 好用的Magento一步支付插件One Step Checkout免费版
  2. rtsp 协议 详细讲解
  3. (medium)LeetCode 236.Lowest Common Ancestor of a Binary Tree
  4. Oracle 学习笔记3:新建数据库没有scott用户解决办法
  5. Linux定时任务Crontab命令详解
  6. Aix字符集
  7. xfs文件系统磁盘配额
  8. (转)Linux命令grep
  9. 201521123101 《Java程序设计》第13周学习总结
  10. [js高手之路] 设计模式系列课程 - DOM迭代器(2)
  11. Python模块1
  12. P1156 垃圾陷阱 DP
  13. 背水一战 Windows 10 (69) - 控件(控件基类): UIElement - Manipulate 手势处理, 路由事件的注册, 路由事件的冒泡, 命中测试的可见性
  14. odoo学习之带出信息
  15. ubuntu 中文设置
  16. JPA报错, PersistenceException_Unable to build Hibernate SessionFactory
  17. jquery中animate({left:&#39;-=&#39;+width})中的 &#39;-=&#39;+是什么意思?
  18. WPF MultiSelect模式下ListBox 实现多个ListBoxItem拖拽
  19. java多线程安全
  20. 搭建Cat笔记01

热门文章

  1. Linux who命令详解
  2. GPL &amp; Apache License
  3. [COGS 0107][NOIP 2003] 传染病控制
  4. 剖析php脚本的超时机制
  5. eclipse git 解决冲突
  6. 11GR2 中的常见 RMAN 问题
  7. BZOJ5072:[Lydsy1710月赛]小A的树(树形DP)
  8. BZOJ2588:Count on a tree(主席树)
  9. [HNOI2010]公交线路
  10. Kali-linux密码在线破解