注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

告别迷茫

梦想与现实的差距,就是我们生活的意义。因为我们有差距,我们才会一直积累,在努力。

 
 
 

日志

 
 

4-3-2队列的顺序储存  

2014-04-10 16:44:56|  分类: 陈明数据结构代码 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

#include<stdio.h>

#define max 64
typedef struct
{
int data[max];
int front,rear;
}sequeue;
sequeue *q;
//第一个位置不储存元素的,全部以-1开头,以迎合C语言的特性;
//front总是指向当前当前对头元素的前一个位置
//尾指针指向当前的队尾的元素;
//(1)初始化操作;
void Inintseq(sequeue *q)
{
q->front=-1;
q->rear=-1;
}
//(2) 对头的删除的操作;(只要在front的前面加1就可以了啊)
int Delseq(sequeue *q)
{
if(q->front==q->rear)//怎样判断是否为空就是这样的啊!
{
printf(" sequence is emoty");
return NULL;
}
else
{
q->front++;//加1了之后才有数值得大小;
return q->data[q->front];//front总是指向当前当前对头元素的前一个位置
}

}
//(3)队列的删除操作,在队尾插入只需将rear的指针增加1,将数据储入rear指针指到的位置;
int Insertseq(sequeue *q,int x)
{
if(q->rear>=max-1)
{
return NULL;
}
else
{
(q->rear)++;//队尾插入只需将rear的指针增加1
q->data[q->rear]=x;//将数据储入rear指针指到的位置
return true;
}
}
//**********************************************************************************************************************
//(4)数组越界和假溢出的问题,前面任由很多的空间未曾使用,但是rear指向了队尾。这是假溢出的问题啊!
//解决假溢出的问题,该怎么办啊?;
void seq_full(sequeue *q)
{
int i;
if(q->rear-q->front==max)//前后的额元素满了啊;
printf("sequeue overflow");
else
{
/*所有的元素向前移动啊???????????????????????????????????????*/
for(i=0;i<(q->rear-q->front);i++)//是否有问题啊??????,两个元素之间的距离啊!(有几个就转移几个色)
q->data[i]=q->data[q->front+i+1];//值得考虑哈哈!
q->rear=q->rear-q->front-1;//后面的位置就得改变了啊
q->front=-1;//设置为初始的状态!
}
}


  评论这张
 
阅读(0)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017