队列(queue)

  队列简称队,是线性表的一种特殊形式,是一种应用很广泛的数据结构.对于它的所有插入在表的一端进行;所有删除在表的另一端进行.从一端进队,从另一端出队,既先进先出原则,称为先进先出表(First In First Out,简称FIFO)
  设队q=(a1,a2,......,an)中,a1为允许删除的一端,称为头(front),用F表示;an为允许插入的一端,称为尾(rear),用R表示.

队列的基本算法:      插入,删除,读列头的值,判断队列是否为空

#define MAX 5
char p[MAX],qde();
int spos,rpos;         /*spos相当于R,推入指针,    rpos相当F,删除指针*/
void qen(char);


1.队列的插入
void qen(char q)
{
  if(spos==MAX)
    { 
      printf("队列满了/n"); 
      return ;
    }
   p[spos]=q;
   spos++;
}

2.队列的删除
char qde()
{
  if(rpos==spos)
   {
      printf("No(more) character./n");
      return NULL;
   }
  p[rpos]='0';  /*出列复原加此语句,出列不复原,去掉此语句
  rpos++;
 return p[rpos-1];  /*删除后立即上推,在此语句前加push()*/
}

3.读列头的值
char ptop()
{
  return p[rpos];
}

4.判断队列是否为空
int sempty()
{
  if(rpos==spos)
   return 1;      //为真是空
  esle
   return 0;    //为假不是空
}

5.队列中的元素向前移1位的函数
void push()
{
  register int t;
  for(t=rpos;t<spos;++t)
   p[t-1]=p[t];  /*向前移一位*/
  p[spos-1]='0';
  rpos--;
  spos--;
}

4.队列的输出函数
void print()
{
  register int t;
  for(t=0;t<MAX;t++)
    printf("%c",p[t]);
  printf("/n");
}

(1)循环队列的插入函数
void qen(char q)
{
  if(spos==MAX)   /*spos=R,尾*/
   {
     if(spos!=rpos)
        spos=0;
     else
        {
         printf("List 满了/n");
         return;  
        }
   }
   p[spos]=q;
   spos++;
}

(2)循环队列的删除函数
char qde()
{
  if(spos==rpos)
  {
    printf("List 满了/n");
    return NULL;
  }
  p[rpos]='0';
  rpos++;
  return p[rpos-1];
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值