数据结构-链表队列
/*
* 队列的操作练习
* */
#include<stdio.h>
#include<malloc.h>
typedef int datatype;
//队列链表
typedef struct _node_
{
datatype data;
struct _node_ *next;
}linknode,*linklist;
//队列
typedef struct
{
linklist front,rear;
}linkqueue;
linkqueue *creat_empty_linkqueue()//创建队列
{
linkqueue *lq = NULL;
lq = (linkqueue *)malloc(sizeof(linkqueue));
lq->front = lq->rear = (linklist)malloc(sizeof(linknode));
lq->front->next = NULL;
return lq;
}
int empty_linkqueue(linkqueue *lq)//判空
{
if(lq->front == lq->rear)
{
return 1;
}
else
{
return 0;
}
//return lq->front == lq->rear;
}
int en_linkqueue(linkqueue *lq,datatype x)//入列
{
linklist q ;
q = (linklist)malloc(sizeof(linknode));
q->data = x ;
lq->rear->next = q;
lq->rear = q;
q->next = NULL;
return 1;
}
datatype de_linkqueue(linkqueue *lq)//出列
{
if(empty_linkqueue(lq))
{
return 0;
}
else
{
datatype temp;
linklist q;
q = lq->front;
lq->front = q->next;
temp = q->next->data;
free(q);
return temp;
}
}
int clear_linkqueue(linkqueue *lq)//清空队列
{
if(empty_linkqueue(lq))
{
return 0;
}
else
{
while(1)
{
if(empty_linkqueue(lq) != 1)
{
de_linkqueue(lq);
}
else
break;
}
}
}
int main(int argc,char *argv[])//主函数验证
{
linkqueue *lq = NULL;
lq = creat_empty_linkqueue();
printf("判断空:%d\n",empty_linkqueue(lq));
en_linkqueue(lq,200);
en_linkqueue(lq,300);
en_linkqueue(lq,500);
printf("判断空:%d\n",empty_linkqueue(lq));
printf("清空:%d\n",clear_linkqueue(lq));
en_linkqueue(lq,200);
printf("出列:%d\n",de_linkqueue(lq));
printf("判断空:%d\n",empty_linkqueue(lq));
return 0;
}
补充:综合编程 , 其他综合 ,