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 ;
}

随机队列 ADT接口 数组实现的更多相关文章

  1. 双端队列 ADT接口 数组实现

    Deque ADT接口 DEQUEUE.h: #include <stdlib.h> #include "Item.h" void DEQUEUEinit(int); ...

  2. FIFO队列 ADT接口 数组实现

    FIFO.h (接口) #include "Item.h" #include <stdlib.h> typedef struct STACKnode *link; st ...

  3. 双端队列 ADT接口 链表实现

    Deque ADT接口 DEQUEUE.h: #include <stdlib.h> #include "Item.h" typedef struct DEQUEUEn ...

  4. FIFO队列 ADT接口 链表实现

    FIFO.h (接口) #include "Item.h" void QUEUinit(int); int QUEUempty(void); void QUEUput(Item); ...

  5. LIFO栈 ADT接口 数组实现

    LIFO 栈结构 typedef int ElemenType; struct seqStack{ ElemeType data[MaxSize]; int top; }; typedef struc ...

  6. 3.6 栈 ADT - 3.7 队列 ADT

    3.6 栈 ADT 栈是限制插入和删除只能在一个位置上进行的表,叫做栈的顶部.对栈的基本操作有进栈和出栈,进栈在顶部插入元素,出栈删除最后插入的元素. 栈是一个表,因此任何实现表的方法都能实现栈.显然 ...

  7. 多项式ADT的数组实现

    /*删除表的正确方法*/ /*assume header*/ void DeleteList(List L) { Position p,Tmp; p=L->Next; while(p != NU ...

  8. JAVA该队列中的数组,圆阵队列,链队列

    /** * 文件名:QueueText.java * 时间:2014年10月22下午9:05:13 * 笔者:维亚康姆维修 */ package chapter3; /** * 类名:ArrayQue ...

  9. LIFO栈 ADT接口 实现十进制转其他进制

    LIFO 接口 Stack.h //LIFO 链栈初始化 void InitStack(Stack top){ //LIFO 链栈判断栈空 boolean StackKEmpty(Stack top) ...

随机推荐

  1. Linux 下LNMP环境搭建_【all】

    LNMP = Linux + Nginx + Mysql + PHP 1.0 Linux环境搭建 Linux 系统安装[Redhat] 1.1. FastCGI介绍 1.什么是CGI(common g ...

  2. 在oracle电子商务套件中输出信息

    一.用自定义用户HAND_SL登陆http://zd01.haasgz.hand-china.com:30000/ 添加可执行并发程序 执行文件名填写自己的包名称.入口函数/过程名 二.将可执行程序添 ...

  3. ASP.NET Core 返回文件、用户下载文件,从网站下载文件,动态下载文件

    ASP.NET Core 中,可以在静态目录添加文件,直接访问就可以下载.但是这种方法可能不安全,也不够灵活. 我们可以在 Controller 控制器中 添加 一个 Action,通过此Action ...

  4. [EffectiveC++]item03:尽可能使用const 并且转载一篇关于const函数的博客

    速度 #include <iostream> using namespace std; class TextBlock { private: string text; public: Te ...

  5. [BZOJ 2730][HNOI 2012] 矿场搭建

    2730: [HNOI2012]矿场搭建 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2113  Solved: 979[Submit][Statu ...

  6. 求最长公共子串 Longest Common Subsequence

    最长公共子串 // Longest Common Subsequence 子串有别于子序列, 子串是连续的, 而子序列可以不连续 /*--------------------------------- ...

  7. Xcode中模拟器慢

    取消下图中框框打勾

  8. opencv python3.6安装和测试

    安装: 命令行  pip install D:\python3.6.1\Scriptsopencv_python-3.2.0-cp36-cp36m-win_amd64.whl 测试代码: import ...

  9. requirejs 多页面,多js 打包代码,requirejs多对多打包

    这段代码来自 http://stackoverflow.com/questions/20583812/grunt-requirejs-optimizer-for-a-multi-app-project ...

  10. 关于options请求的一点理解

    最近最项目改造,对所有的ajax请求统一做了一点处理,发现原来很正经的ajax请求突然不正常了,每个ajax之前都多了一个相应的method为options的请求.虽然之前知道ajax的请求中meth ...