zoukankan      html  css  js  c++  java
  • 随机队列 ADT接口 数组实现

    Random queue ADT接口 RANDOM.h

     1 #include <stdlib.h>
     2 #include "Item.h"
     3 #include <time.h>
     4 #include <stdbool.h>
     5 
     6 void RANDOMQUEUEtailput(int);
     7 void RANDOMQUEUEinit(int);
     8 bool RANDOMQUEUEisFull(void);
     9 bool RANDOMQUEUEisEmpty(void);
    10 static int RANDOMQUEUErand(void);
    11 void RANDOMQUEUEerror(void);
    12 Item RANDOMQUEUEtailget(void);

    Item.h:

    typedef char Item;

    Random queue ADT接口实现 RANDOM.c:

     1 #include "RANDOM.h"
     2 
     3 static Item *Q;
     4 static int N,head,tail,k=0;
     5 
     6 
     7 void RANDOMQUEUEinit(int maxN)
     8 {
     9     Q=malloc(maxN*sizeof(*Q));
    10     N=maxN;
    11     head=N;
    12     tail=0;
    13 }
    14 void RANDOMQUEUEtailput(int ch)
    15 {
    16     if(RANDOMQUEUEisFull())
    17         RANDOMQUEUEerror();
    18     Q[tail]=ch;
    19     tail=(tail+1)%N;
    20     k++;
    21 }
    22 Item RANDOMQUEUEtailget(void)
    23 {
    24     if(RANDOMQUEUEisEmpty())
    25         RANDOMQUEUEerror();
    26     int i=RANDOMQUEUErand();
    27     Item temp=Q[i];
    28     head%=N;
    29     Q[i]=Q[head];
    30     head++;
    31     k--;
    32     return temp;
    33 }
    34 bool RANDOMQUEUEisFull(void)
    35 {
    36     if((tail+1)%N==(head%N))
    37         return true;
    38     return false;
    39 }
    40 bool RANDOMQUEUEisEmpty(void)
    41 {
    42     if(head%N==tail)
    43         return true;
    44     return false;
    45 }
    46 static int RANDOMQUEUErand(void)
    47 {
    48     srand(time(0));
    49     return rand()%k;
    50 }
    51 void RANDOMQUEUEerror(void)
    52 {
    53     printf("
    内存已满或为空");
    54     exit(1);
    55 }

    主程序 main.c:

     1 #include <stdio.h>
     2 #include "RANDOM.h"
     3 
     4 
     5 int main(void)
     6 {
     7     int N;
     8     printf("输入字符串大小:");
     9     if(scanf("%d", &N))
    10         RANDOMQUEUEinit(N);
    11     else
    12         RANDOMQUEUEerror();
    13     getchar();
    14     printf("输入字符串
    ");
    15     while((N=getchar())!='
    ')
    16     {
    17         if(N=='*')
    18             {
    19                 putchar(RANDOMQUEUEtailget());
    20                 //putchar('
    ');
    21             }
    22         else
    23             RANDOMQUEUEtailput(N);
    24     }
    25     
    26     return 0;
    27 }
  • 相关阅读:
    flume
    Hive的安装
    集群的高级设定
    HDFS命令
    2019-9-25:渗透测试,基础学习,初识Hydra,BP爆破密码
    2019-9-17:渗透测试,基础学习,apache初识,mysql初识等笔记
    2019-9-24:渗透测试,css样式,js基础学习笔记
    2019-9-24:渗透测试,JavaScript数据类型基础学习
    2019-9-23:渗透测试,基础学习,http协议数据包的认识,html css的认识,笔记
    转。http,状态码详解
  • 原文地址:https://www.cnblogs.com/WALLACE-S-BOOK/p/9018338.html
Copyright © 2011-2022 走看看