IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 队列的基本操作 -> 正文阅读

[数据结构与算法]队列的基本操作


title: 队列的基本操作
mathjax: true
date: 2021-10-28 20:53:24
tags: “数据结构作业”
description: wls队列的基本操作

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
// 队列的节点 
struct Node
{
        int data;
        struct Node* next;
};
// 队首队尾指针 
struct Queue
{
        struct Node* front;
        struct Node* rear;
        int size;
};
 
void QueueInit(struct Queue* queue)
{
        queue->front = NULL;
        queue->rear = NULL;
        queue->size = 0;
}
 
int QueueEmpty(struct Queue* queue)
{
        return (queue->size == 0);
}
 
void QueuePush(struct Queue* queue, const int data)
{
        struct Node* node;
        node = (struct Node*)malloc(sizeof(struct Node));
        assert(node != NULL);
        
        node->data = data;
        node->next = NULL;
        
        if(QueueEmpty(queue))
        {
            queue->front = node;
            queue->rear = node;
        }
        else
        {            
            queue->rear->next = node;
            queue->rear = node;
        }
        ++queue->size;
}

int QueuePop(struct Queue* queue, int* data)
{
        if (QueueEmpty(queue))
        {
                return 0;
        }
        struct Node* tmp = queue->front;
        *data = queue->front->data;
        queue->front = queue->front->next;
        free(tmp);
        --queue->size;
 
        return 1;
}
 
void QueueDestroy(struct Queue* queue)
{
     struct Node* tmp;
     while(queue->front)
     {
         tmp = queue->front;
         queue->front = queue->front->next;
         free(tmp);
     }
}

//show all ele
int _deplay(struct Queue queue)
{
    if (queue.size == 0) {
        return 0;
    }
    struct Node *p = queue.front;
    while(p)
    {
        printf("%d " , p -> data);
        p = p -> next;
    }
    printf("\n");
    return 1;
}

void deplay(struct  Queue queue) 
{
    if (_deplay(queue) == 0 ) 
    {
        printf("队列为空.\n");
        return ;
    }
    else {
        printf("遍历结束.\n");
    }
}

void menu(struct Queue queue)
{
    while(1) {
            int op , x;
            printf("1.插入        2.弹出\n");
            printf("3.遍历        4.销毁\n");
            printf("5.得到头元素   6.是否为空\n");
            printf("7.长度\n");
            printf("请输入操作序号:");
            scanf("%d" , &op);
            switch (op)
            {
                case 1:
                    printf("请输入您要插入的元素.\n");
                    scanf("%d" , &x);
                    QueuePush(&queue, x);
                    break;
                case 2:
                    if(QueuePop(&queue, &x))printf("%d 已经被弹出队列.\n" , x);
                    else printf("队列已空.\n");
                    break;
                case 3:
                    deplay(queue);
                    break;
                case 4:
                    QueueDestroy(&queue);
                    printf("已经销毁.\n");
                    break;
                case 5:
                    printf("头元素为:%d\n" , queue.front -> data);
                    break;
                case 6:
                    if(QueueEmpty(&queue)) printf("为空\n");
                    else printf("不为空\n");
                    break;
                case 7:
                    printf("当前长度为:%d\n" , queue.size);
                    break;
                default:
                    printf("请输入正常的操作序号\n");
                    menu(queue);
                    break;
            }
        }
}
 
int main(void)
{
    //得到头 , 遍历 , 
        struct Queue queue;
        QueueInit(&queue);
        menu(queue);
        return 0;
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-29 13:18:32  更:2021-10-29 13:19:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:00:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码