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