> 文档中心 > 队列的链式存储

队列的链式存储

目录:

      • 队列的有关操作:
      • queue.h文件(定义结构体)
      • 初始化队列:
      • 入队操作:
      • 出队操作:
      • 判断队列是否为空:
      • 输出队列数据元素:
      • 测试:
      • 输出结果:

队列:
  只允许在一端进行插入操作,另一端进行删除操作

队列的有关操作:

Queue_Node *InitQueu();     //初始化队列void EnQueue(Queue_Node *queue,int val);    //入队操作(尾部插入)void DeQueue(Queue_Node *queue);     //出队操作 (头部删除)boolean isEmpty(Queue_Node *queue);  //判断队列是否为空void show(Queue_Node *queue); //显示队列元素

queue.h文件(定义结构体)

#include #include typedef struct Queue{    int val;//保存数据    struct  Queue *Next;//指向下一节点}Queue_Node;

初始化队列:

Queue_Node *InitQueu(){    Queue_Node *node = (Queue_Node *) malloc(sizeof(Queue_Node));    if(node == NULL)    { printf("内存申请失败\n"); exit(-1);    }    node->val = 0;    node->Next = NULL;}

入队操作:

//将新入队元素放在队尾void EnQueue(Queue_Node *queue,int val){    Queue_Node *tmp = queue;    //保存头结点指针    Queue_Node *node = (Queue_Node *)malloc(sizeof(Queue_Node)); //开辟空间保存数据    if(node == NULL) return ;    //找到尾结点    while(tmp->Next != NULL)    { tmp = tmp->Next;    }    node->val = val;//将入队数据放入新结点    node->Next = NULL;//新结点的指向为空    tmp->Next = node;//将尾结点的指针域指向新结点}

出队操作:

//从队头出队void DeQueue(Queue_Node *queue){    if(isEmpty(queue))    { printf("队列为空,无法出队\n"); return ;    }    Queue_Node *delete = queue->Next;//用辅助结点保存首结点位置    queue->Next = delete->Next;//头结点指针域指向首结点指向的下一位置    printf("出队结点数据为:\t%d\n",delete->val);//输出出队节点数据    free(delete);//释放出队结点空间}

判断队列是否为空:

boolean isEmpty(Queue_Node *queue){    if(queue->Next == NULL) return TRUE;    return FALSE;}

输出队列数据元素:

void show(Queue_Node *queue){    if(isEmpty(queue))    { printf("队列为空,无法输出\n");    }    Queue_Node *node = queue->Next;    while(node)    { printf("队列数据为:\t%d\n",node->val); node = node->Next;    }}

测试:

void main(){    //此节点相当于头结点方便数据操作    Queue_Node *queue;    queue = InitQueu();  EnQueue(queue,2);    EnQueue(queue,3);    EnQueue(queue,4);    EnQueue(queue,5);     printf("------入队后数据元素------\n");    show(queue);    printf("-------出队数据元素-------\n");     DeQueue(queue);    DeQueue(queue);    printf("------出队后数据元素------\n");    show(queue);    system("pause");    return ;}

输出结果:

在这里插入图片描述

步森服饰商城