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. [翻译] VICMAImageView

    VICMAImageView https://github.com/vitoziv/VICMAImageView Change image view's content mode with your ...

  2. Python学习---网络编程 1217【all】

    OSI七层模型: 物理层, 数据链路层, 网络层,传输层,会话层,表达层,应用层 应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 传输层:TCP,UDP 网络层:I ...

  3. 我的第一个 Servlet

    简单记录一下我从头写一个 Servlet 的过程. 我安装的是 Tomcat 7 版本,在 Ubuntu 18.04 上运行,IDE 为 Intellij IDEA. 首先创建一个 Java Web ...

  4. Nginx学习.md

    正常运行的必备配置 user Syntax: user user [group]; Default: user nobody nobody; Context: main 指定运行worker进程的用户 ...

  5. Python version 3.6 required, which was not found in the registry错误解决

    问题: 安装pywin32出现Python version 3.6 required, which was not found in the registry错误解决 解决: 建立一个文件 regis ...

  6. 环境变量、block、修饰符:block对环境变量的引用和修改需要通过修饰符来限定

    环境变量.block.修饰符:block对环境变量的引用和修改需要通过修饰符来限定. http://www.cnblogs.com/fengmin/p/5816580.html - (NSUInteg ...

  7. bzoj 4712: 洪水

    [权限题][https://www.lydsy.com/JudgeOnline/status.php?problem_id=4712&jresult=4] 这道动态\(dp\)终于不是独立集/ ...

  8. 从getshell到提权

    从getshell到提权 一.起因 学校推出新的党建系统,之前党建系统还参与开发,后来因为一些原因没有开发,主要想看看这届工作室的学弟.学妹代码水平,把源码撸下来审计一下,工作室用git开发的,记着上 ...

  9. 枚举enum和enumerate

    #coding=utf-8 from enum import Enum #定义自己的枚举时需要使用class,继承Enum类 class Color(Enum): red=1 green=2 blue ...

  10. 三维偏序 cdq

    luogu_3810 就是将逆序对转化到了三维上去 原理等我寒假再补 第一维sort解决 第二维并归排序(cdq)解决 第三维树状数组 // luogu-judger-enable-o2 #inclu ...