随机队列 ADT接口 数组实现
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接口 数组实现的更多相关文章
- 双端队列 ADT接口 数组实现
Deque ADT接口 DEQUEUE.h: #include <stdlib.h> #include "Item.h" void DEQUEUEinit(int); ...
- FIFO队列 ADT接口 数组实现
FIFO.h (接口) #include "Item.h" #include <stdlib.h> typedef struct STACKnode *link; st ...
- 双端队列 ADT接口 链表实现
Deque ADT接口 DEQUEUE.h: #include <stdlib.h> #include "Item.h" typedef struct DEQUEUEn ...
- FIFO队列 ADT接口 链表实现
FIFO.h (接口) #include "Item.h" void QUEUinit(int); int QUEUempty(void); void QUEUput(Item); ...
- LIFO栈 ADT接口 数组实现
LIFO 栈结构 typedef int ElemenType; struct seqStack{ ElemeType data[MaxSize]; int top; }; typedef struc ...
- 3.6 栈 ADT - 3.7 队列 ADT
3.6 栈 ADT 栈是限制插入和删除只能在一个位置上进行的表,叫做栈的顶部.对栈的基本操作有进栈和出栈,进栈在顶部插入元素,出栈删除最后插入的元素. 栈是一个表,因此任何实现表的方法都能实现栈.显然 ...
- 多项式ADT的数组实现
/*删除表的正确方法*/ /*assume header*/ void DeleteList(List L) { Position p,Tmp; p=L->Next; while(p != NU ...
- JAVA该队列中的数组,圆阵队列,链队列
/** * 文件名:QueueText.java * 时间:2014年10月22下午9:05:13 * 笔者:维亚康姆维修 */ package chapter3; /** * 类名:ArrayQue ...
- LIFO栈 ADT接口 实现十进制转其他进制
LIFO 接口 Stack.h //LIFO 链栈初始化 void InitStack(Stack top){ //LIFO 链栈判断栈空 boolean StackKEmpty(Stack top) ...
随机推荐
- Python学习---PyCharm的使用学习
1.1. IDEA的使用 PyCharm2017下载 链接:https://pan.baidu.com/s/1HPR9FtVV5BCvd3uTdOetxw 密码:ok0q 激活IDEA2017(方案一 ...
- Java学习---程序设计_基础题[1]
180813 补全没有的答案! 0. 数组排序大全[冒泡/选择/快速/插入] package com.ftl; import java.io.BufferedReader; import java.i ...
- Apache配置支持目录浏览
主配置文件 httpd.conf 中修改: 1)添加支持模块 LoadModule autoindex_module modules/mod_autoindex.so LoadModule dir ...
- 编程语言——C----细节
2017-09-27 18:40:47 程序设计的基本概念 1.计算机语言:把人与计算机之间交流的语言叫做计算机语言 1)计算机语言分为高级语言和低级语言 2)高级语言:远离硬件 3)低级语言:贴近 ...
- MySQL语法相关其一
一篇基础语法相关的笔记 // 参考资料: MySQL入门很简单 黄缙华等编著 清华大学出版社 北京 建议进入官网下载对应版本后安装:https://dev.mysql.com/downloads/my ...
- 015.1 Lock接口
内容:Lock接口使用步骤,同步生产大白兔奶糖的例子 同步代码块的锁是隐式的,显式容易让我们理解.所以我们使用这个显式的方法,方便理解代码.######实现同步步骤:1.获取锁:lock()2.同步代 ...
- 随手练——HUD 2609 How many
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2609 题目没看懂,就想百度找下,结果 多数人就写个 最小表示法,就po代码了,看了这个博主才明白题目是 ...
- ethereumjs/ethereumjs-blockchain-2-test
https://github.com/ethereumjs/ethereumjs-blockchain/tree/master/test 'use strict' const test = requi ...
- docker安装后启动不了 解决方法
第一种情况: 可能是你的selinux没有disabled,导致了守护docker的deamon进程启动不了 查看系统日志如果发现下列信息: May 7 12:34:14 localhost dock ...
- Python 自动化paramiko操作linux使用shell命令,以及文件上传下载linux与windows之间的实现
# coding=utf8 import paramiko """ /* python -m pip install paramiko python version 3. ...