第三章 栈和队列

3.1.1 栈的基本概念





3.1.2 顺序栈的实现




#include <stdio.h>
#define MaxSize 10
typedef struct {int date[MaxSize];int top;
}SqStack;
void InitStack(SqStack& S)
{S.top = -1;
}
bool StackEmpty(SqStack S)
{if (S.top == -1){return true;}else{return false;}
}
bool Push(SqStack& S, int x)
{printf("请输入要进栈的数:");while(S.top!=MaxSize - 1){scanf_s("%d", &x);S.top = S.top + 1;S.date[S.top] = x;}return true;
}
void print(SqStack& S)
{for (int i = 0; i <= S.top; i++){printf("%d ", S.date[i]);}printf("\n");
}
bool Pop(SqStack& S, int &x)
{if (S.top == -1){return false;}x = S.date[S.top];S.top = S.top - 1;return true;
}
void main()
{int x = 0;SqStack S;InitStack(S);StackEmpty(S);Push(S, x);printf("进栈的数有:");print(S);Pop(S,x);printf("出栈的栈顶为:%d\n",x);printf("新栈的数有:");print(S);}
//请输入要进栈的数:65 43 43 76 65 34 76 23 43 12
//进栈的数有 : 65 43 43 76 65 34 76 23 43 12
//出栈的栈顶为 : 12
//新栈的数有 : 65 43 43 76 65 34 76 23 43

#include <stdio.h>
#define MaxSize 10
typedef struct {int date[MaxSize];int top;
}SqStack;
void InitStack(SqStack& S)
{S.top = 0;
}
bool StackEmpty(SqStack S)
{if (S.top == 0){return true;}else{return false;}
}
bool Push(SqStack& S, int x)
{printf("请输入要进栈的数:");while(S.top!=MaxSize){scanf_s("%d", &x);S.date[S.top] = x;S.top = S.top + 1;}return true;
}
void print(SqStack& S)
{for (int i = 0; i < S.top; i++){printf("%d ", S.date[i]);}printf("\n");
}
bool Pop(SqStack& S, int &x)
{if (S.top ==0){return false;}S.top = S.top - 1;x = S.date[S.top];return true;
}
void main()
{int x = 0;SqStack S;InitStack(S);StackEmpty(S);Push(S, x);printf("进栈的数有:");print(S);Pop(S,x);printf("出栈的栈顶为:%d\n",x);printf("新栈的数有:");print(S);}
//请输入要进栈的数:65 43 43 76 65 34 76 23 43 12
//进栈的数有 : 65 43 43 76 65 34 76 23 43 12
//出栈的栈顶为 : 12
//新栈的数有 : 65 43 43 76 65 34 76 23 43


3.1.3 链栈的实现





带头结点

在这里插入代码片

不带头结点

在这里插入代码片

3.2.1 队列的基本概念




3.2.2 队列的顺序实现





#include<stdio.h>
#define MaxSize 10
typedef struct
{int data[MaxSize];int front, rear;
}SqQueue;
//初始化队列
void InitQueue(SqQueue &Q)
{Q.front = Q.rear = 0;
}
//判断队列是否为空
bool QueueEmpty(SqQueue Q)
{if (Q.rear == Q.front){return true;}else{return false;}
}
//打印
void print(SqQueue& Q)
{for (int i = Q.front; i < Q.rear; i++){printf("%d ", Q.data[i]);}printf("\n");
}
//入队
bool EnQueue(SqQueue &Q,int x)
{printf("请输入入队的值:");while ((Q.rear + 1) % MaxSize != Q.front){scanf_s("%d", &x);Q.data[Q.rear] = x;Q.rear = (Q.rear + 1) % MaxSize;}return true;
}
//出队
bool DeQueue(SqQueue& Q, int& x)
{while (Q.rear == Q.front){return false;}x = Q.data[Q.front];Q.front=(Q.front + 1) % MaxSize;return true;
}void main()
{int x = 0;SqQueue Q;InitQueue(Q);QueueEmpty(Q);EnQueue(Q,x);printf("入队的数有:");print(Q);DeQueue(Q, x);printf("出队元素的值为:%d\n", x);printf("现在的队伍有:");print(Q);
}
//请输入入队的值:23 43 76 86 98 56 78 56 45 98
//入队的数有 : 23 43 76 86 98 56 78 56 45
//出队元素的值为 : 23
//现在的队伍有 : 43 76 86 98 56 78 56 45




3.2.3 队列的链式实现










在这里插入代码片

3.2.4 双端队列






数据结构(王道版本,主讲人:闲鱼学长)P19-P31相关推荐

  1. 数据结构(王道版本,主讲人:闲鱼学长)P7-P18

    2.1.1 线性表的定义和基本操作 2.2.1 顺序表的定义 #include<stdio.h> #define MaxSize 10//定义最大长度 typedef struct {in ...

  2. Android闲鱼版本大全,闲鱼下载2021安卓最新版_手机app官方版免费安装下载_豌豆荚...

    程序需要调用以下重要权限: 指纹管理 - 允许程序指纹管理 捕获视频输出 - 允许程序捕获视频输出 修改应用操作统计信息 - 允许程序修改应用操作统计信息 请求安装文件包 - 允许程序请求安装文件包 ...

  3. 技术干货 | 闲鱼:一个优秀的 Push 平台,需要经历怎样的前世今生

    简介:mPaaS 消息推送服务,快速集成多家厂商 Push 通道,有效提高用户留存率,提升用户体验. 编者荐语: 点击这里,了解 mPaaS 消息推送服务,快速集成多家厂商 Push 通道,有效提高用 ...

  4. 30Wqps+闲鱼优惠中台,如何架构的?

    说在前面 在尼恩的(50+)读者社群中,经常遇到一个 非常.非常高频的一个面试题,但是很不好回答,类似如下: 千万级数据,如何做系统架构? 亿级数据,如何做做系统架构? 千万级流量,如何做系统架构? ...

  5. 跳不出的整改循环,闲鱼、58的囚徒困境

    来源|新熵 编辑|于松叶 今年春节是一众二手交易平台注定不好过的一个春节.最近两个月来,接二连三袭来的重拳,让二手平台们战战兢兢. 1月14日,江苏省消保委通报了闲鱼.58同城等12家二手交易平台,存 ...

  6. 闲鱼如何通过Push升级,更懂你?

    作者|剑辛 出品|阿里巴巴新零售淘系技术部 对闲鱼用户来说,因为闲鱼商品库存只有一件,商品的时效性很强,因此当用户关注的卖家上新.浏览的商品发生降价或者平台为用户找到一批高性价比商品时,用户期望尽快被 ...

  7. 闲鱼自动收货源码最新版本+搭建教程

    闲鱼自动收货源码最新版本+搭建教程 搭建很简单 上传源码解压 php版本7.4 不需要数据库 后台路径:域名/admin 后台账号:admin 后台密码:123456 下载链接:https://pan ...

  8. Flutter开发之《闲鱼的探索与收获》笔记(51)

    本篇内容是根据闲鱼的匠修,本名叫熊华丽的做的演讲内容做的笔记.本文的内容只是认为自己需要学习的地方. 演讲实录--Flutter-闲鱼的探索与收获 Flutter基本知识 (PPT图示)左边是Flut ...

  9. 闲鱼如何保障交易链路质量

    背景 闲鱼作为一款垂直交易社区APP,拥有复杂多样的业务场景:涉及c2c.回收寄卖.租房租赁.见面交易.验货担保等,复杂多变的交易模式.比如验货流程: 涉及39个状态机节点 横跨10+应用系统 涉及6 ...

最新文章

  1. 如何找同服务器下网站,利用bing查询同一服务器IP下的所有网站
  2. 【bzoj2038】[国家集训队2010]小Z的袜子 莫队
  3. 金计算机一级,计算机一级B
  4. MyBatis框架 注解
  5. python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
  6. iOS上应用Static Framework
  7. 转:大前研一:“质问力”是解决问题最重要的能力
  8. matlab求解线性规划问题的实例代码,用matlab求解线性规划问题.doc
  9. Vcenter证书过期处理----Vcenter无法登录,“根证书错误”,“签名证书无效”,“503 service not available”
  10. 统计每个日期新用户的次日留存率
  11. 利用Navicat Premium导出数据库表结构信息至Excel
  12. 【SemiDrive源码分析】【Yocto源码分析】02 - yocto/meta-openembedded目录源码分析
  13. .NET 6 实现滑动验证码(七)、生成验证码
  14. 室内定位UWB在化工园区如何智能化管理
  15. 吸烟者问题——进程同步
  16. linux 火焰检测,033_linux操作系统火焰图探测系统性能
  17. 分库分表:Sharding-JDBC,mycat
  18. SVO、vinsmono、 OKVIS系统比较
  19. DAY TRADER
  20. oracle数值两倍函数,oracle函数总结:第二部分 数值型函数总结

热门文章

  1. 软件技术基础(一):绪论
  2. Java中com.jcraft.jsch.JSch讲解
  3. 几个比较好的Web前端开发框架
  4. 深度解析SQL和NoSQL数据库,掌握主流数据库【两万字解析】
  5. java对象数组练习,定义数组存储三台汽车对象。汽车的属性有:品牌,价格,颜色。创建三个汽车对象,数据通过键盘输入而来,并把数据存入数组中,打印出每台汽车的信息。
  6. word隐藏段落标记,回车三角
  7. MySQL数据备份命令
  8. 欧氏距离,马氏距离(转载)
  9. DQN、DDQN、Dueling DQN、PER DQN
  10. 云服务器如何完整地卸载mysql