您的位置:首页 > 编程语言 > C语言/C++

链式队列ADT实现(C语言)2018.3.14

2018-03-14 19:10 417 查看
#include <stdio.h>
#include <stdlib.h>
/**< 链式队列 */
/**< 定义结点 */
typedef struct
{
int data;
struct QNode* next;
}QNode;
/**< 定义队列结构体 */
typedef struct
{
QNode* front;
QNode* rear;
int len;
}Queue;
/**< 初始化队列 */
void Init_QUEUE(Queue* q)///声明变量的时候已经初始化,声明指针的时候为野指针,必须首先初始化。
{
q->front=q->rear=(QNode*)malloc(sizeof(QNode));
q->front->next=NULL;
q->len=0;
}
/**< 销毁队列 */
void Destroy_QUEUE()
{

}
/**< 队列判空 */
int IsEmpty_QUEUE(Queue* q)
{
if(q->front==q->rear)
return 1;
else return 0;
}
/**< 入队操作 */
void En_QUEUE(Queue* q,int Val)
{
QNode p;
p.data=Val;
q->rear->next=&p;
q->rear=q->rear->next;
q->len++;
}
/**< 出队操作 */
void Out_QUEUE(Queue* q)
{
QNode* p=q->front->next;
q->front->next=q->front->next->next;///编译失败?q->front->next->next写成p->next才能编译成功
free(p);
q->len--;
}
/**< 取队首元素 */
int GetFront_QUEUE(Queue* q)
{
int n=q->front->next->data;
if(!IsEmpty_QUEUE(q))
{
printf("%d",n);
return n;
}
else return 0;
}
/**< 测试代码 */
int main()
{
Queue q;
Init_QUEUE(&q);
En_QUEUE(&q,1);
En_QUEUE(&q,2);
En_QUEUE(&q,3);
En_QUEUE(&q,4);
Out_QUEUE(&q);
printf("Hello world!\n");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: