顺序储存队列的基本操作

作者在 2008-01-02 00:48:19 发布以下内容

队列是要求一端插入,另一端删除的特殊线性表,它遵循“先进先出”的特点

#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 50
typedef char DateType;
typedef struct
{
 DateType q[MAXSIZE];
 int front,rear;
}SeqQue;
void InitQue(SeqQue* sq)
{
 sq->front=sq->rear=0;
 printf("\n\t\t\t初始化队列成功!");
}
int InsertQue(SeqQue* sq,DateType x)
{
 if(sq->rear==MAXSIZE)
 {
  return 0;
 }
 else
 {
  sq->rear++;
        sq->q[sq->rear]=x;
     return 1;
 }
}
DateType ExitQue(SeqQue* sq)
{
 DateType x;
 if(sq->front==sq->rear)
 {
  return 0;
 }
 else
 {
  x=sq->q[sq->front+1];
  sq->front++;
     return (x);
 }
}
int LenQue(SeqQue* sq)
{
 int i;
 if(sq->front==sq->rear)
 {
  return 0;
 }
 else
 {
  i=sq->rear-sq->front;
  return i;
 }
}
void ShowQue(SeqQue* sq)
{
 int i;
 if(sq->front==sq->rear)
 {
  printf("\n\t\t\t队列为空!");
 }
 else
 {
  printf("\n\t\t\t队列元素为:");
  printf("\n\t\t\t");
  for(i=sq->front+1;i<=sq->rear;i++)
  {
   printf("%c\t",sq->q[i]);
  }
 }
}
void main()
{
 SeqQue sq;
 int i,j,k;
 DateType x;
 while(j)
 {
  printf("\n\n\n\n");
  printf("\n\t\t\t\t\t顺序列队");
  printf("\n\t\t\t**************************************");
        printf("\n\t\t\t***      1---初始化队列            ***");
  printf("\n\t\t\t***      2---入队                  ***");
  printf("\n\t\t\t***      3---出队                  ***");
  printf("\n\t\t\t***      4---队列长度              ***");
  printf("\n\t\t\t***      5---显示队列              ***");
  printf("\n\t\t\t***      0---退出                  ***");
  printf("\n\t\t\t**************************************\n");
  printf("\n\t\t\t请选择菜单号(0-5):");
  scanf("%d",&i);getchar();
  if(i==1)
  {
   InitQue(&sq);
  }
  else if(i==2)
  {
   printf("\n\t\t\t请输入入队的元素:");
   scanf("%c",&x);
   if(InsertQue(&sq,x)==0)
   {
    printf("\n\t\t\t队列已满!");
   }
   else
   {
    printf("\n\t\t\t入队成功!");
   }
  }
  else if(i==3)
  {
   x=ExitQue(&sq);
   if(x==0)
   {
    printf("\n\t\t\t队列为空!");
   }
   else
   {
    printf("\n\t\t\t出队元素为:%c",x);
   }
  }
  else if(i==4)
  {
            k=LenQue(&sq);
   printf("\n\t\t\t队列长度为:%d",k);
  }
  else if(i==5)
  {
   ShowQue(&sq);
  }
  else if(i==0)
  {
   j=0;
   printf("\n\t\t\t程序结束!\n");
  }
 }
}
欢迎访问我的网站:www.phpjs.cn

数据结构与算法 | 阅读 4430 次
文章评论,共0条
游客请输入验证码
浏览67721次