当前位置: 首页 > news >正文

如何进行网站建设的销售手机百度安装下载

如何进行网站建设的销售,手机百度安装下载,福建省建设干部培训中心网站首页,有哪些做企业网站的分析#xff1a; 队列遵循先入先出的原则#xff0c;栈遵循后入先出的原则 也就是说#xff0c;使用队列实现栈时#xff0c;入队操作正常#xff0c;但是出队要模拟出栈的操作#xff0c;我们需要访问的是队尾的元素#xff1b;题目允许使用两个队列#xff0c;我们可… 分析 队列遵循先入先出的原则栈遵循后入先出的原则 也就是说使用队列实现栈时入队操作正常但是出队要模拟出栈的操作我们需要访问的是队尾的元素题目允许使用两个队列我们可以先将存有数据的队列中除队尾元素外的所有元素依次出队存入空队列中再访问原队列中的队头元素即可 1.使用两个队列构造栈 C语言中没有定义队列的结构我们需要自定义队列及其相关操作 如下结构MyStack由两个队列结构q1和q2构成 为我们创建的栈结构进行动态内存申请并进行初始化 //由两个队列构成栈结构 typedef struct {Queue q1;Queue q2;} MyStack; //创建栈 MyStack* myStackCreate() {//myStack未具有两个队列的栈结构类型MyStack* obj (MyStack*)malloc(sizeof(MyStack));//内存开辟失败if(obj NULL){perror(malloc fail);exit(-1);}//开辟成功初始化else{QueueInit(obj-q1);QueueInit(obj-q2);}return obj; }2.压栈操作 模拟栈的压栈操作数据正常入队即可 Note: 我们要将数据插入非空的队列保证每次都存在一个空队列可以进行数据的存储 void myStackPush(MyStack* obj, int x) {if(!QueueEmpty(obj-q1)){QueuePush(obj-q1,x);}else{QueuePush(obj-q2,x);}} 3.移除并返回栈顶元素 模拟栈的出栈操作访问并移除的是非空队列的队尾元素 步骤将存有数据的队列中除队尾元素外的所有元素依次出队存入空队列中再访问并移除原队列中的队头元素即可如下图 上述操作后q1和q2的结构如下: 此时将队列q1中的元素相当于后入的栈顶元素先存储再出队列q1即清空队列q1供下次压栈操作使用返回存储的值即可 int myStackPop(MyStack* obj) {Queue* empty obj-q1;Queue* nonempty obj-q2;if(!QueueEmpty(obj-q1)){nonempty obj-q1; empty obj-q2; }//非空队列前n-1个入空队列并出队剩下最后一个即为栈顶元素while(QueueSize(nonempty) 1){QueuePush(empty,QueueFront(nonempty));QueuePop(nonempty);}int top QueueFront(nonempty);QueuePop(nonempty);//清空队列return top; } 4.返回栈顶元素 栈顶元素即非空队列的队尾数据 int myStackTop(MyStack* obj) { if(!QueueEmpty(obj-q1)){return QueueBack(obj-q1);}else{return QueueBack(obj-q2);} } 5.判断是否为空栈  myStack是由两个队列构成的栈结构当两个队列都为空时栈即为空 bool myStackEmpty(MyStack* obj) {return QueueEmpty(obj-q1) QueueEmpty(obj-q2); } 6.空间释放 创建栈时为其动态申请了空间操作结束需要进行空间释放否则会造成内存泄漏 void myStackFree(MyStack* obj) {QueueDestroy(obj-q1);QueueDestroy(obj-q2); } 完整参考代码如下 #includestdio.h #includeassert.h #includestdlib.htypedef int QDataType; typedef struct QueueNode {struct QueueNode* next;QDataType data; }QNode;typedef struct Queue {QNode* head;QNode* tail; }Queue;#define bool int #define true 1 #define false 0//队列初始化 void QueueInit(Queue* pq); //队列销毁 void QueueDestroy(Queue* pq); //数据入队 void QueuePush(Queue* pq, QDataType x); //数据出队 void QueuePop(Queue* pq); //访问队头数据 QDataType QueueFront(Queue* pq); //访问队尾数据 QDataType QueueBack(Queue* pq); //判断队列是否为空 bool QueueEmpty(Queue* pq); //求队列的大小 int QueueSize(Queue* pq);//队列初始化 void QueueInit(Queue* pq) {assert(pq);pq-head pq-tail NULL; } //队列销毁 void QueueDestroy(Queue* pq) {assert(pq);QNode* cur pq-head;while (cur){QNode* del cur;cur cur-next;free(del);}pq-head pq-tail NULL; } //数据入队 void QueuePush(Queue* pq, QDataType x) {assert(pq);QNode* newnode (QNode*)malloc(sizeof(QNode));if (newnode NULL){perror(malloc fail);exit(-1);}else{newnode-data x;newnode-next NULL;}//空队列时插入if (pq-tail NULL){pq-head pq-tail newnode;}//非空队列时插入else{pq-tail-next newnode;//链接新元素pq-tail newnode;//更新队尾} } //数据出队 void QueuePop(Queue* pq) {assert(pq);//空队列不能进行出队操作assert(!QueueEmpty(pq));//队列中只有一个元素if (pq-head-next NULL){free(pq-head);pq-head pq-tail NULL;}else{QNode* del pq-head;pq-head pq-head-next;free(del);del NULL;} } //访问队头数据 QDataType QueueFront(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-head-data;} //访问队尾数据 QDataType QueueBack(Queue* pq) {assert(pq);assert(!QueueEmpty(pq));return pq-tail-data; } //判断队列是否为空 bool QueueEmpty(Queue* pq) {assert(pq);/*if (pq-tail pq-head NULL){return true;}else{return false;}*/return pq-head NULL pq-tail NULL; } //求队列的大小 int QueueSize(Queue* pq) {assert(pq);int size 0;QNode* cur pq-head;while (cur){size;cur cur-next;}return size; }//由两个队列构成栈结构 typedef struct {Queue q1;Queue q2;} MyStack; //创建栈 MyStack* myStackCreate() {//myStack未具有两个队列的栈结构类型MyStack* obj (MyStack*)malloc(sizeof(MyStack));//内存开辟失败if(obj NULL){perror(malloc fail);exit(-1);}//开辟成功初始化else{QueueInit(obj-q1);QueueInit(obj-q2);}return obj; } void myStackPush(MyStack* obj, int x) {if(!QueueEmpty(obj-q1)){QueuePush(obj-q1,x);}else{QueuePush(obj-q2,x);}}int myStackPop(MyStack* obj) {Queue* empty obj-q1;Queue* nonempty obj-q2;if(!QueueEmpty(obj-q1)){nonempty obj-q1; empty obj-q2; }//非空队列前n-1个入空队列并出队剩下最后一个即为栈顶元素while(QueueSize(nonempty) 1){QueuePush(empty,QueueFront(nonempty));QueuePop(nonempty);}int top QueueFront(nonempty);QueuePop(nonempty);//清空队列return top; } //栈顶元素即非空队列的队尾数据 int myStackTop(MyStack* obj) { if(!QueueEmpty(obj-q1)){return QueueBack(obj-q1);}else{return QueueBack(obj-q2);} }bool myStackEmpty(MyStack* obj) {return QueueEmpty(obj-q1) QueueEmpty(obj-q2); }void myStackFree(MyStack* obj) {QueueDestroy(obj-q1);QueueDestroy(obj-q2); }
http://www.w-s-a.com/news/218884/

相关文章:

  • 织梦cms 官方网站网页视频如何下载到电脑
  • 查询建设公司业绩网站国外外链平台
  • 搭建直播网站需要怎么做做石材网站步骤
  • 移动网站如何做权重wordpress 统计字数 插件
  • 编写网站的软件百度指数教程
  • 网站改版建议策划书做设计什么兼职网站
  • 北京做兼职网站文创产品设计流程
  • 南阳做玉器网站wordpress 图片被缩小
  • 自己做网站卖衣服cms做网站容易不
  • 安徽安搜做的网站怎么样手机网站商城建设答辩问题
  • 分析不同网站的优缺点房产网站定制
  • 深圳工业设计大展2021论坛与网站做优化哪个更好
  • 什么网站做招聘比较好网络营销渠道管理
  • 网站建设选择什么模式淘宝网站可以做轮播吗
  • 山西免费网站制作乌市高新区建设局网站
  • 公司网站建设费用会计处理手机app免费下载
  • 网站的做网站的公司网站有些什么内容
  • 网站新类型wordpress 随机文章
  • 电商网站建设会计分录朝阳市网站公司
  • 正邦网站建设 优帮云百姓网征婚
  • 企业网站有哪些举几个例子端午节网站建设目的
  • 南京免费发布信息网站网站建设与管理职责
  • 无锡市建设培训中心网站企业vi设计是啥
  • 宿松网站建设推荐秒搜科技国家官方网站
  • 网站的服务器选择wordpress文章底部加分享
  • 天津专业的网站建设公司阿里云服务器 wordpress
  • 家教辅导培训网站建设中东跨境电商平台有哪些
  • 商城形式的网站需要多少钱做医药商城网站的公司吗
  • 贵阳网站设计zu97彩票创建网站
  • 网站建设与分工的论文足球世界排名