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

来源:互联网 发布:软件著作权案例 编辑:程序博客网 时间:2024/05/01 08:17



/*
实现功能:用链式表实现队列的各种操作
编译环境: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
原创粉丝点击