数据结构之队列的链表实现



/*
实现功能:用链式表实现队列的各种操作
编译环境:Windows7 64b,vc6.0
日期:  2015/7/20
作者:  wtt561111
*/
#include "stdio.h"
#include "stdlib.h"
typedef struct Node *PNode;
struct Node{
PNode link;
int info;
};
struct LinkQueue{
PNode f;
PNode r;
};
typedef struct LinkQueue *PLinkQueue;


/*
创建一个空的队列,成功返回一个队列指针,否则返回空
*/


PLinkQueue createEmptyQueue_link(){
PLinkQueue plq=(PLinkQueue)malloc(sizeof(struct LinkQueue));
if(plq==NULL){
printf("out of space!\n");
return NULL;
}
plq->f=NULL;
plq->r=NULL;
return plq;
}


/*
判断队列是否为空,为空返回1,否则返回0
*/


int isEmptyQueue_link(PLinkQueue plq){

if(plq->f==NULL)
return 1;
return 0;


}




/*********************************************************/




/*
将x入列,成功返回1,否则返回0
*/


int enQueue_link(PLinkQueue plq,int x){

PNode p = (PNode) malloc (sizeof(struct Node));
if(p==NULL){
printf("out of space!\n");
return 0;
}
p->link=NULL;
p->info=x;
if(plq->f==NULL){
plq->f=p;
} else{
plq->r->link=p;
}
plq->r=p;
return 1;
}




/*********************************************************/




/*
取队头元素的值,成功返回元素的值,否则返回-1。
*/


int frontQueue_link(PLinkQueue plq){

if(plq->f==NULL){
printf("empty!\n");
return -1;
}
return plq->f->info;
}




/*********************************************************/




/*
队头元素出列,成功返回1,否则返回0
*/


int deQueue_link(PLinkQueue plq){
PNode p;
if(plq->f==NULL){
printf("empty!\n");
return 0;
}
p=plq->f;
plq->f=p->link;
free(p);
return 1;
}




/*********************************************************/


/********************************主函数*******************/
int main(){
PLinkQueue plq_get=createEmptyQueue_link();
enQueue_link(plq_get,100);
enQueue_link(plq_get,101);
enQueue_link(plq_get,102);
enQueue_link(plq_get,103);
deQueue_link(plq_get);
printf( "%d\n",frontQueue_link(plq_get) );
// if(isEmptyQueue_link(plq_get))
// printf("empty");
return 0; 
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值