• 链式队列定义、插入、删除


    #include <stdio.h>
    #include <stdlib.h>
    
    #define ElemType int
    typedef struct QNode
    {
        ElemType data;//定义队列中的元素
        struct QNode *next;
    }QNode;
    
    typedef struct LinkQueue
    {
        QNode *front;
        QNode *rear;
    }LinkQueue;//定义一个队列,队列只有一个头指针和一个尾指针
    
    
    //队列的初始化
    void InitQueue(LinkQueue *q)
    {
        q->front = (LinkQueue*)malloc(sizeof(QNode));
        if(!q->front)
        {
            exit(0);
        }
        q->rear = q->front;
        q->front->next = NULL;
    }
    
    //队列的插入
    void InsertQueue(LinkQueue *p,ElemType *e)
    //队列为p,要插入的元素为e,队列的rear指针指向队列的最后一个元素。队列的front指针指向头结点,头结点无元素
    {
        QNode *ptr;
        ptr = (LinkQueue*)malloc(sizeof(QNode));
        ptr->data = *e;
        ptr->next = NULL;
        p->rear->next = ptr;
    //    p->rear = p->rear->next;
        p->rear = ptr;
    }
    
    //队列的删除
    void DeleteQueue(LinkQueue *p,ElemType *e)
    {
        QNode *s;
        if(p->front == p->rear)
        {
            return;
        }
        s = p->front->next;
        *e = s->data;
        p->front->next = s->next;
     //   if(s == p->rear)
        if(p->front->next == NULL)//用这条也可以是等价的
        {
            p->front = p->rear;
        }
        free(s);
    }
    
    //销毁一个队列
    void DestoryQueue(LinkQueue *p)
    {
        while(p->front)
        {
            p->rear = p->front->next;//p->front->next == NULL
            free(p->front);//释放p的头结点
            p->front = p->rear;//把p的front和rear都置为NULL
        }
    
    }
    int main()
    {
        int i;
        LinkQueue p;
        ElemType e;
        InitQueue(&p);
        for(i = 1;i <= 10;i++)
        {
            InsertQueue(&p,&i);
        }
    
        for(i = 1;i <= 10;i++)
        {
            DeleteQueue(&p,&e);
            printf("%2d",e);
        }
        return 0;
    }
    

     输入一个字符串以字符'#'结束,在屏幕上打印出来

    #include <stdio.h>
    #include <stdlib.h>
    
    #define M 100
    #define ElemType char
    typedef struct QNode
    {
        ElemType data;//定义队列中的元素
        struct QNode *next;
    }QNode;
    
    typedef struct LinkQueue
    {
        QNode *front;
        QNode *rear;
    }LinkQueue;//定义一个队列,队列只有一个头指针和一个尾指针
    
    
    //队列的初始化
    void InitQueue(LinkQueue *q)
    {
        q->front = (LinkQueue*)malloc(sizeof(QNode));
        if(!q->front)
        {
            exit(0);
        }
        q->rear = q->front;
        q->front->next = NULL;
    }
    
    //队列的插入
    void InsertQueue(LinkQueue *p,ElemType *e)
    //队列为p,要插入的元素为e,队列的rear指针指向队列的最后一个元素。队列的front指针指向头结点,头结点无元素
    {
        QNode *ptr;
        ptr = (LinkQueue*)malloc(sizeof(QNode));
        ptr->data = *e;
        ptr->next = NULL;
        p->rear->next = ptr;
    //    p->rear = p->rear->next;
        p->rear = ptr;
    }
    
    //队列的删除
    void DeleteQueue(LinkQueue *p,ElemType *e)
    {
        QNode *s;
        if(p->front == p->rear)
        {
            return;
        }
        s = p->front->next;
        *e = s->data;
        p->front->next = s->next;
     //   if(s == p->rear)
        if(p->front->next == NULL)//用这条也可以是等价的
        {
            p->front = p->rear;
        }
        free(s);
    }
    
    //销毁一个队列
    void DestoryQueue(LinkQueue *p)
    {
        while(p->front)
        {
            p->rear = p->front->next;//p->front->next == NULL
            free(p->front);//释放p的头结点
            p->front = p->rear;//把p的front和rear都置为NULL
        }
    
    }
    int main()
    {
        int i,len = 0;
        LinkQueue p;
        ElemType e;
        char c;
        InitQueue(&p);
        printf("输入字符串:
    ");
        scanf("%c",&c);
        while(c != '#')
        {
            InsertQueue(&p,&c);
            len++;
            scanf("%c",&c);
        }
        printf("字符串为:
    ");
        for(i = 1;i <= len;i++)
        {
            DeleteQueue(&p,&e);
            printf("%c",e);
        }
        return 0;
    }
    

      

     

  • 相关阅读:
    win10家庭版转专业版并激活
    关于vcruntime140D.dll丢失问题
    phpMyAdmin使用教程
    在wamp中直接进入项目
    sublime Text3的使用
    wamp的安装配置
    PHP Web开发入门流程
    PHP与MySQL的亲密接触
    flex 布局 实现电商页面商品展示floor
    html css+div+jquery实现图片轮播
  • 原文地址:https://www.cnblogs.com/devinblog/p/4165780.html
Copyright © 2020-2023  润新知