• 链式队列的相关操作


     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 typedef int ElemType;
     4 typedef struct LinkNode{
     5     ElemType data;
     6     struct LinkNode *next;
     7 }LinkNode;
     8 //先进先出
     9 typedef struct{
    10     //链表头 链表尾
    11     LinkNode *front,*rear;
    12 }LinkQueue;
    13 //链式队列的初始化 
    14 void InitQueue(LinkQueue &Q)
    15 {
    16     //头和尾指向同一个结点
    17     Q.front=Q.rear=(LinkNode*)malloc(sizeof(LinkNode));
    18     Q.front->next=NULL;
    19 }
    20 //判断队列是否为空 
    21 bool IsEmpty(LinkQueue Q)
    22 {
    23     if(Q.front==Q.rear) return true;
    24     return false;
    25 }
    26 //入队 
    27 void EnQueue(LinkQueue &Q,ElemType x)
    28 {
    29     //创建新结点,插入到链尾     
    30     LinkNode *s=(LinkNode *)malloc(sizeof(LinkNode));
    31     s->data=x;
    32     s->next=NULL;
    33     Q.rear->next=s;
    34     Q.rear=s;
    35 }
    36 //出队  头部删除法
    37 bool DeQueue(LinkQueue &Q,ElemType &x)
    38 {
    39     //队列为空
    40     if(Q.front==Q.rear) return false;
    41     //头结点什么都没存,所以头结点的下一个节点才有数据
    42     LinkNode *p=Q.front->next;
    43     x=p->data;
    44     //断链
    45     Q.front->next=p->next;
    46     //删除的是最后一个元素,则队列置为空 
    47     if(Q.rear==p) Q.rear=Q.front; 
    48     //释放删除节点的内存 
    49     free(p);
    50     return true;
    51 }
    52 //队列的链式存储,部删除法,尾部插入法
    53 int main()
    54 {
    55     LinkQueue Q;
    56     bool ret;
    57     ElemType element;//存储出队元素
    58     InitQueue(Q);
    59     EnQueue(Q,3);
    60     EnQueue(Q,4);
    61     EnQueue(Q,5);
    62     EnQueue(Q,6);
    63     EnQueue(Q,7);
    64     ret=DeQueue(Q,element);
    65     if(ret) printf("出队成功,元素值为 %d
    ",element);
    66     else printf("出队失败
    ");
    67     system("pause");
    68 }
  • 相关阅读:
    spring-security使用-权限控制(八)
    Spring源码阅读(六)-ConfigurationClassPostProcessor
    java陷阱之应用缓存
    Spring Batch源码阅读-Job之SimpleJob(五)
    Spring Batch源码阅读-JobLauncher之SimpleJobLauncher(四)
    Spring Batch源码阅读-初始化(三)
    Spring Batch源码阅读-简单使用(二)
    Spring Batch源码阅读-基本概念(一)
    JS函数的定义与调用方法
    百度地图离线化(API v=1.3)
  • 原文地址:https://www.cnblogs.com/shixinzei/p/12539459.html
Copyright © 2020-2023  润新知