• 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 }
  • 相关阅读:
    从0开始学习 GitHub 系列之「02.加入 GitHub」
    从0开始学习 GitHub 系列之「01.初识 GitHub
    用Redis轻松实现秒杀系统
    算法之美
    Android窗口管理服务WindowManagerService显示Activity组件的启动窗口(Starting Window)的过程分析
    6)django-示例(fbv)
    5)django-模板
    4)django-视图view
    3)django-路由系统url
    2)django-请求生命周期
  • 原文地址:https://www.cnblogs.com/lsy-lsy/p/10031129.html
Copyright © 2020-2023  润新知