[C/C++ 演算法]-资料结构与演算法(文魁):环状伫列使用范例

 

线上执行结果:http://www.tutorialspoint.com/compile_c_online.php

code2html:http://tohtml.com/

 

 

/* =============== Program Description =============== */
/* 程式名称 : 8_3.cpp 							       */
/* 程式目的 : 环状伫列使用范例						   */
/* 输    入 : 输入到环状伫列的整数资料		           */
/* 输    出 : 由环状伫列所输出的整数资料		       */
/* =================================================== */
#define n 5
// 宣告标头档
#include "stdio.h"
// 宣告全域变数
int cQueue[n];
int cfront=-1;
int crear=-1;
// 宣告函式原型
// 利用传值的方式把整数data传进addq函式中
void addcq(int data);
// 从delq函式中回传一个整数
int delcq(void);
// 从isEmpty函式中回传一个整数
int iscEmpty(void);
// 从isFull函式中回传一个整数
int iscFull(void);
void main(void)
{
int i;
int A[n]={1,3,5,7,9};
// 输入的资料
printf(" Data input: ");
/* 依序资料放入伫列 */
for(i=0;i<n;i++)
{
printf("%d",A[i]);
addcq(A[i]);
}
printf("\n");
// 输出的资料
printf(" Data output : ");
/* 依序从伫列取出资料 */
for(i=0;i<n;i++)
printf("%d",delcq());
printf("\n");
getchar();
}
void addcq(int data)
{
if(iscFull()) /* iscFull��检查伫列��否已满了*/
printf("cQueue is Full!\n");
else
cQueue[++crear%n] = data;
}
int delcq(void)
{
if(iscEmpty()) /* iscEmpty��检查伫列��否已空了*/
{
printf("cQueue is Empty!\n");
return 0;
/* 传回0代表失败*/
}else{
return cQueue[++cfront%n];
/* 一切正常front,加1,且传回资料*/
}
}
int iscFull(void)
{
if(cfront==(crear+1)%n)
return 1; /* 1代表已满 */
else
return 0; /* 0代表未满 */
}
int iscEmpty(void)
{
if(cfront==crear)
return 1; /* 1代表已空 */
else
return 0; /* 0代表未空 */
}

 

 


相关文章