zoukankan      html  css  js  c++  java
  • C语言链队列

    链队列类似于单链表,为了限制只能从两端操作数据,其结构体内有2个指针分别指向头尾,但队列里的节点用另一种结构体来表示,头尾指针则为指向该结构体的类型。只能通过操作头尾指针来操作队列

     1 typedef int elemtype;
     2 
     3 typedef struct QueueNode{
     4     elemtype date;
     5     struct QueueNode *next;
     6 }LinkQueueNode;
     7 typedef struct LQueue{
     8     LinkQueueNode *front;
     9     LinkQueueNode *rear;
    10 }LinkQueue;

    初始化链队列 

     1 LinkQueue *init_LinkQueue(){
     2     
     3     LinkQueueNode *node = (LinkQueueNode *)malloc(sizeof(LinkQueueNode));
     4     LinkQueue *queue = (LinkQueue *)malloc(sizeof(LinkQueue));
     5     
     6     //front、rear初始化时都指在头结点 
     7     if(node!=NULL && queue!=NULL){
     8         node->next = NULL;
     9         queue->front = node;
    10         queue->rear = node;
    11         return queue;
    12     }
    13     return NULL;
    14 }

    链队列只要有内存空间就会不溢出,判断空的条件是头尾指针相同

    1 int Empty_LinkQueue(LinkQueue *p){
    2     
    3     if(p->front == p->rear)
    4         return 1;
    5         
    6     return 0;
    7     
    8 }

    入队和出队要特别注意只能通过操作头尾指针来操作队列

     1 int delete_LinkQueue(LinkQueue *p,elemtype *e){
     2     
     3     if(p->front == p->rear)
     4         return 0;
     5     
     6     LinkQueueNode *node = (LinkQueueNode *)malloc(sizeof(LinkQueueNode));
     7     
     8     node = p->front->next;
     9     *e = node->date;
    10     p->front = node;
    11     
    12     if(node == p->rear)
    13         p->rear = p->front;
    14     free(node);
    15     return 1;
    16     
    17 }
    18 
    19 int Entry_LinkQueue(LinkQueue *p,elemtype e){
    20     
    21     LinkQueueNode *node = (LinkQueueNode *)malloc(sizeof(LinkQueueNode));
    22     if(node == NULL)
    23         return 0;
    24         
    25     node->date = e;
    26     node->next = NULL;
    27     p->rear->next = node;
    28     p->rear = node;
    29     return 1;
    30     
    31 }
  • 相关阅读:
    NX二次开发-UFUN根据矩阵移动或复制对象uf5947
    NX二次开发-UFUN判断两个向量是否相等UF_VEC3_is_equal
    移动端开发小技巧
    echarts对后端返回的数据进行处理
    Vue router / Element 重复点击导航路由报错解决方法
    谷歌浏览器设置跨域问题
    setLocalStorage的存入与读取
    关于layui中数据表格的使用心得
    npm scss安装错误
    鼠标右键获取页面的坐标
  • 原文地址:https://www.cnblogs.com/lsy-lsy/p/10031129.html
Copyright © 2011-2022 走看看