数据结构01-线性结构-链表栈队列-队列篇

简介: 数据结构01-线性结构-链表栈队列-队列篇


参考:

总结

本系列为C++数据结构系列,会介绍 线性结构,简单树,特殊树,简单图等。本文为线性结构部分。

大纲要求

  1. 线性结构
    【 3 】链表:单链表、双向链表、循环链表
    【 3 】栈
    【 3 】队列

线性结构-队列

队列(Queue)与栈一样,是一种线性存储结构,它具有如下特点:

(1)队列中的数据元素遵循“先进先出”(First In First Out)的原则,简称FIFO结构;

(2)在队尾添加元素,在队头删除元素。

队列的相关概念:

(1)队头与队尾: 允许元素插入的一端称为队尾,允许元素删除的一端称为队头;

(2)入队:队列的插入操作;

(3)出队:队列的删除操作。

3、队列的操作:

(1)入队: 通常命名为push()

(2)出队: 通常命名为pop()

(3)求队列中元素个数

(4)判断队列是否为空

(5)获取队首元素

4、队列的分类:

(1)基于数组的循环队列(循环队列)

(2)基于链表的队列(链队列)

QQ号码解密

新学期开始了,甘德是石申的新同桌,为交流天文学,甘德向石申询问QQ号,石申给了甘德一串加密过的数字,同时石申也告诉了甘德解密规则。规则是这样的:首先将第1个数删除,紧接着将第2个数放到这串数的末尾,再将第3个数删除并将第4个数放到这串数的末尾,再将第5个数删除直到剩下最后一个数,将最后一个数也删除。按照刚才删除的顺序,把这些删除的数连在一起就是石申的QQ啦。现在你来帮帮甘德吧。石申给甘德加密过的一串数是“631758924”。

过程如下:

#include<stdio.h>
int q[102]={0,6,3,1,7,5,8,9,2,4};
int head,tail;
int main()
{
    int i;
    // 初始化队列
    head=1;
    tail=10;//队列中已有9个元素 tail西乡队尾的后一个位置
    while(head<tail)//当队列不为空的时候执行循环
    {
        // 打印队首并将队首出队
        printf("%d",q[head]);
        head++;//把队首出队
        // 先将新队首添加到队尾
        q[tail]=q[head];
        tail++;
        //将队首出队
        head++;
    }
    getchar();
    getchar();
    return 0;
}

用结构体封装队列

#include<stdio.h>
struct queue
{
    int data[100];//队列的主体,用来存储内容
    int head;//
    int tail;
};
int q_demo[102]={0,6,3,1,7,5,8,9,2,4};
int main()
{
    struct queue q;
    int i;
    // 初始化队列
    q.head=1;
    q.tail=1;
    for(i=1;i<=9;i++)
    {
        // 依次向队列中插入9个数
        //scanf("%d",&q.data[q.tail]);//
        q.data[q.tail]=q_demo[i];
        q.tail++;
    }
    while(q.head<q.tail)//当队列不为空的时候执行循环
    {
        // 打印队首并将队首出队
        printf("%d",q.data[q.head]);
        q.head++;//把队首出队
        // 先将新队首添加到队尾
        q.data[q.tail]=q.data[q.head];
        q.tail++;
        //将队首出队
        q.head++;
    }
    getchar();
    getchar();
    return 0;
}

相关文章
|
7天前
|
C语言
【数据结构】栈和队列(c语言实现)(附源码)
本文介绍了栈和队列两种数据结构。栈是一种只能在一端进行插入和删除操作的线性表,遵循“先进后出”原则;队列则在一端插入、另一端删除,遵循“先进先出”原则。文章详细讲解了栈和队列的结构定义、方法声明及实现,并提供了完整的代码示例。栈和队列在实际应用中非常广泛,如二叉树的层序遍历和快速排序的非递归实现等。
72 9
|
1月前
|
缓存 算法 调度
数据结构之 - 双端队列数据结构详解: 从基础到实现
数据结构之 - 双端队列数据结构详解: 从基础到实现
58 5
|
1月前
|
存储 算法 搜索推荐
探索常见数据结构:数组、链表、栈、队列、树和图
探索常见数据结构:数组、链表、栈、队列、树和图
93 64
|
6天前
|
存储 搜索推荐 算法
【数据结构】树型结构详解 + 堆的实现(c语言)(附源码)
本文介绍了树和二叉树的基本概念及结构,重点讲解了堆这一重要的数据结构。堆是一种特殊的完全二叉树,常用于实现优先队列和高效的排序算法(如堆排序)。文章详细描述了堆的性质、存储方式及其实现方法,包括插入、删除和取堆顶数据等操作的具体实现。通过这些内容,读者可以全面了解堆的原理和应用。
46 16
|
10天前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
29天前
初步认识栈和队列
初步认识栈和队列
57 10
|
29天前
|
存储 算法 定位技术
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
这篇文章主要介绍了稀疏数组和队列的概念、应用实例以及如何使用数组模拟队列和环形队列的实现方法。
20 0
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
|
1月前
|
存储 安全 Java
【用Java学习数据结构系列】探索栈和队列的无尽秘密
【用Java学习数据结构系列】探索栈和队列的无尽秘密
29 2
【数据结构】--- 栈和队列
【数据结构】--- 栈和队列
|
1月前
|
消息中间件 存储 Java
数据结构之 - 深入探析队列数据结构: 助你理解其原理与应用
数据结构之 - 深入探析队列数据结构: 助你理解其原理与应用
29 4