队列

作者: 萌面大叔2 | 来源:发表于2017-02-15 13:08 被阅读0次
头删,尾插
#include<stdio.h>
#include<stdlib.h> 
typedef struct Queue
{
    int num;
    struct Queue *next;
}Queue;

typedef struct pQueue
{
    Queue *first;
    Queue *tail; 
} pQueue;

int getNum()
{
    int num;
    printf("请输入数字:");
    scanf("%d",&num);
    return num;
}

pQueue* creatQueue(pQueue *queueHead)    //创建链表
{
    if (queueHead==NULL)
    {
        queueHead=(pQueue *)malloc(sizeof(pQueue));
        queueHead->first=queueHead->tail=NULL;
        return queueHead;
    }
    return queueHead;
}

void tailInsertData(pQueue *queueHead)           //尾插
{
    if(queueHead==NULL)
    {
        printf("没有创建成功\n");
        return ;
    }
    Queue *p=(Queue *)malloc(sizeof (Queue));
    p->num=getNum();
    if(queueHead->first==NULL)
    {
        queueHead->first=p;
        queueHead->tail=p;
        p->next=NULL;
        return;
    }
    p->next=NULL;
    queueHead->tail->next=p;
    queueHead->tail=p; 
}

void headDeleteDta(pQueue *queueHead)                        //头删
{
    if(queueHead==NULL||queueHead->tail==NULL)
    {
        printf("无信息可删!\n");
        return ; 
    }
    if(queueHead->first->next==NULL)
    {
        free(queueHead->first);
        queueHead->first=queueHead->tail=NULL;
        return;
    }
    Queue *p=queueHead->first;
    queueHead->first=p->next;
    free(p);
    p=NULL;
}


void printData(pQueue *queueHead)                          //打印信息 
{
    if(queueHead==NULL||queueHead->tail==NULL)
    {
        printf("无信息可打印\n");
        return;
        
    }
    Queue *temp;
    printf("Head-->");
    for(temp=queueHead->first; temp!=NULL; temp=temp->next)
    {
        printf("[%d]-->",temp->num);
    }
    printf("NULL\n");
} 
int main()
{
    pQueue *queueHead=NULL;
    int select;
    while(1)
    {
        printf("=======\n");
        printf("1.创建数据\n");
        printf("2.删除数据\n");
        printf("3.插入数据\n");
        printf("4.打印队列\n");
        printf("5.退出\n");
        printf("=======\n");
        scanf("%d",&select);
        switch(select)
        {
            case 1:
                queueHead=creatQueue(queueHead);
                break;
            case 2:
                headDeleteDta(queueHead);
                break;
            case 3:
                tailInsertData(queueHead);
                break;              
            case 4:
                printData(queueHead);
                break;              
            case 5:
            
                return 0;
            default:
                break;                              
        }       
        
    }


    return 0;
}

相关文章

  • 队列

    队列特性 对比队列和栈 基于数组的队列 对比队列学习循环队列 循环队列难点 阻塞队列 并发队列 应用:线程池中拒绝...

  • 队列

    文章结构 什么是队列 实现队列顺序队列链式队列循环队列 Java中的队列 1. 什么是队列 队列也是一种操作受限的...

  • iOS底层-- GCD源码分析(1)-- dispatch_qu

    手动目录认识队列队列的结构队列的产生主队列全局队列创建的队列管理队列 代码版本dispatch version :...

  • 队列,异步,同步,线程通俗理解

    一、队列 串行队列 并行队列 主队列(只在主线程执行的串行队列) 全局队列(系统的并行队列) 二、 任务(是否具有...

  • GCD基础总结一

    上代码~ 同步串行队列 同步并行队列 异步串行队列 异步并行队列 主队列同步 会卡住 主队列异步

  • OC多线程

    队列创建 线程与队列 队列线程间通信 队列组

  • GCD

    获得主队列 获得全局队列 串行队列 异步队列 同步队列 阻隔队列 (像栅栏一样 ) 例如 A -->栅栏 --...

  • 数据结构第三篇 队列

    队列的特性 前进先出。 我们来大致描述下进出队列的情况。 进队列 1 进队列现在队列是 12 进队列现在队列是 1...

  • 利用链表实现队列

    队列成员变量: 队列长度 队列头节点 队列尾节点队列方法: 队列包含元素个数 队列是否为空 进队操作 出队操作 d...

  • Git 常用操作命令(持续更新)

    当前更新到stash队列 查看stash队列 清空队列 删除某个队列

网友评论

      本文标题:队列

      本文链接:https://www.haomeiwen.com/subject/wxjsuttx.html