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 }
  • 相关阅读:
    一次失败的架构评审会议
    在搜索引擎面前经验是如此苍白
    中层难当
    js调试的小工具
    用js小类库获取浏览器的高度和宽度信息
    js过滤HTML标签以及 
    语句
    .NET中回调事件的简单分析
    javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
    JavaScript中的16进制字符(改进)
  • 原文地址:https://www.cnblogs.com/lsy-lsy/p/10031129.html
Copyright © 2011-2022 走看看