073.队列实例

简介: 073.队列实例
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#define MAX 100
char *p[MAX], *qretrieve(void);
int spos = 0;
int rpos = 0;
void enter(void), qstore(char *q), review(void), delete_ap(void);
int main(void)
{
  char s[80];
  register int t;
  for(t=0; t < MAX; ++t) p[t] = NULL; /* init array to nulls */
  for(;;) {
    printf("Enter, List, Remove, Quit: ");
    gets(s);
    *s = toupper(*s);
    switch(*s) {
    case 'E':
      enter();
      break;
    case 'L':
      review();
      break;
    case 'R':
      delete_ap();
      break;
    case 'Q':
      exit(0);
    }
  }
  return 0;
}
/* Enter appointments in queue. */
void enter(void)
{
  char s[256], *p;
  do {
    printf("Enter appointment %d: ", spos+1);
    gets(s);
    if(*s==0) break; /* no entry */
    p = (char *) malloc(strlen(s)+1);
    if(!p) {
      printf("Out of memory.\n");
      return;
    }
    strcpy(p, s);
    if(*s) qstore(p);
  } while(*s);
}
/* See what's in the queue. */
void review(void)
{
  register int t;
  for(t=rpos; t < spos; ++t)
    printf("%d. %s\n", t+1, p[t]);
}
/* Delete an appointment from the queue. */
void delete_ap(void)
{
  char *p;
  if((p=qretrieve())==NULL) return;
  printf("%s\n", p);
}
/* Store an appointment. */
void qstore(char *q)
{
  if(spos==MAX) {
    printf("List Full\n");
    return;
  }
  p[spos] = q;
  spos++;
}
/* Retrieve an appointment. */
char *qretrieve(void)
{
  if(rpos==spos) {
    printf("No more appointments.\n");
    return NULL;
  }
  rpos++;
  return p[rpos-1];
}
相关文章
|
10月前
|
数据安全/隐私保护 开发者
p文件 破解与防破解技术
p文件 解密机主要功能包括pcode解密、p文件解码、p文件还原m文件、p转m文件、exe文件解密,exe文件还原为m文件
p文件 破解与防破解技术
|
9月前
|
Web App开发 网络安全 iOS开发
一篇文章讲明白Mac活动监视器闪退pro发热耗电过快问题解决,亲测可用解决
一篇文章讲明白Mac活动监视器闪退pro发热耗电过快问题解决,亲测可用解决
151 2
|
8月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错合集之从mysql读数据写到hive报错,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
10月前
|
存储 数据可视化 数据挖掘
python数据分析——时间序列
时间序列是按照时间顺序排列的一系列随时间变化而变化的数据点或观测值。时间序列可以是离散的,例如每月的销售数据,也可以是连续的,例如气温和股票价格等。时间序列常用于预测和分析未来的趋势,例如经济增长、股票走势、天气变化等。
147 1
|
9月前
|
存储 DataWorks Oracle
DataWorks操作报错合集之DataWorks操作报错合集之运行节点及其下游,遇到“内部服务错误:创建工作流失败”的问题,该如何排查
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
70 0
|
存储 固态存储 数据管理
Ceph 简介
Ceph 简介
417 0
|
监控 算法 Java
学习JVM调优
学习JVM调优是为了优化Java应用程序的性能和资源利用。本文将从以下几个方面详细介绍学习JVM调优的步骤和技巧,帮助读者更好地理解和应用这些调优技术。
|
XML 数据采集 前端开发
浅识XPath(熟练掌握XPath的语法)
浅识XPath(熟练掌握XPath的语法)
162 0
|
PHP
关于php的位运算
关于php的位运算
73 0
|
IDE Java 程序员
如何不切换Git分支,同时在多个分支上工作?
如何不切换Git分支,同时在多个分支上工作?
212 0
如何不切换Git分支,同时在多个分支上工作?