- 浏览: 83914 次
- 性别:
- 来自: 武汉
最新评论
-
爱在爪哇:
还跟老子扯框架??源代码都没读的B还有资格扯?
单例模式之我见 -
爱在爪哇:
傻逼了,2011年2月就搞LINUX搞这猛,,为了进MTK。。 ...
虚拟机Vmware下 linux上网设置 ( NAT 方式) +图解 -
爱在爪哇:
基偶双冒泡可以解决。
寻找数组中第二大数 -
爱在爪哇:
加减法交换法可能溢出导致出错,可以考虑字节运算:
a^=b;
...
不添加任何参数,将a,b值互相交换 -
爱在爪哇:
int *p=(int *)malloc(sizeof(int ...
注意区分:指针的物理地址和指针所指向的值的物理地址
/* * 用两个栈实现队列 */ #include<stdio.h> #include<stdlib.h> typedef struct stack { //用来保存元素 int *a; //当前的下标 int loc; //栈中最多可以容纳的元素个数 int max; }st; /* * 初始化指定大小的栈 */ st *initstack(int num) { st *s=(st *)malloc(sizeof(st)); if(s==NULL) { printf("create fail!\n"); exit(1); } s->loc=0; s->max=num; s->a=(int *)malloc(sizeof(int)*num); if(s->a==NULL) { printf("create fail!\n"); exit(1); } return s; } /* * 判断栈是否为空(空:返回1 非空:返回0) */ int isstackempty(st *s) { //栈为空 if(s->loc==0)return 1; else return 0; } /* * 判断栈是否为满(满:返回1 非满:返回0) */ int isstackfull(st *s) { //栈为满 if(s->loc==s->max)return 1; else return 0; } /* * 栈中元素个数 */ int getstacknum(st *s) { if(isstackempty(s)==1)return 0; else return s->loc; } /* * 入栈 */ void pushstack(st *s,int value) { //栈满,无法入栈 if(isstackfull(s)==1) { printf("栈已满,无法入栈!\n"); exit(1); } s->a[s->loc]=value; s->loc++; } /* * 出栈 */ int popstack(st *s) { if(isstackempty(s)==1) { printf("栈为空,无法出栈!\n"); exit(1); } int temp=s->a[s->loc-1]; s->loc--; return temp; } /* * 查看栈顶元素 */ int peekstack(st *s) { if(isstackempty(s)==1) { printf("栈为空,无法查看栈顶元素!\n"); exit(1); } int temp=s->a[s->loc-1]; return temp; } /* * 将一个栈中的元素拷贝到另一栈中 */ void copy(st *src,st *dest) { //拷贝过程中发生溢出 if((src->loc+dest->loc)>dest->max) { printf("拷贝过程中发生溢出!\n"); exit(1); } while(isstackempty(src)!=1) { int value=popstack(src); pushstack(dest,value); } } /* * 打印栈中的各个元素 */ void printstack(st *s) { if(isstackempty(s)==1) { printf("栈为空,无法打印栈中各个元素!\n"); exit(1); } while(isstackempty(s)!=1) { int value=popstack(s); printf("%d--->",value); } } /* * 入队列(入队列的元素保存在src中) */ void pushqueue(st *src,st *dest,int value) { if(src->loc==src->max) { printf("队列已满,无法入队!\n"); exit(1); } src->a[src->loc]=value; src->loc++; } /* * 出队列 * (如果dest不为空,则直接从dest弹出一个元素) * (如果dest为空,src不为空,则先将src中的元素拷贝到dest中,在从dest中弹出一个元素) */ int popqueue(st *src,st *dest) { if(isstackempty(src)==1&&isstackempty(dest)==1) { printf("队列为空,无法出队!\n"); exit(1); } if(isstackempty(dest)!=1) { int value=popstack(dest); return value; } else if(isstackempty(dest)==1&&isstackempty(src)!=1) { copy(src,dest); int value=popstack(dest); return value; } } int main() { int num=3; int value=0; st *src=initstack(num); st *dest=initstack(num); pushstack(src,1); pushstack(src,2); value=popqueue(src,dest); printf("弹出的元素=%d\n",value); pushstack(src,3); pushstack(src,4); pushstack(src,5); value=popqueue(src,dest); printf("弹出的元素=%d\n",value); value=popqueue(src,dest); printf("弹出的元素=%d\n",value); value=popqueue(src,dest); printf("弹出的元素=%d\n",value); value=popqueue(src,dest); printf("弹出的元素=%d\n",value); return 0; }
发表评论
-
一个线程池的最小实现
2011-01-26 16:52 1017在消息中间件的实现中,为了提高客户端和服务器端通信的 ... -
实现一个优先级队列
2011-01-26 14:07 1151由于我的硕 ... -
递归方式求数组中的最大值
2011-01-03 14:38 1150/* * 递归方式求数组中的最大值 */ #incl ... -
打印以下图形
2011-01-03 11:34 699/* * 打印以下图形: * ... -
字符串原地压缩
2011-01-03 11:09 1739/* * 字符串原地压缩 * 例如:"eee ... -
在字符串s中查找子串t最后一次出现的位置
2011-01-02 13:02 3981/* * 设计一个算法,在字符串s中查找子串t最后一次出现 ... -
将一个浮点数转换为字符串(有bug,不知道什么原因)
2011-01-02 11:17 1196/* * 将一个浮点数转换为字符串 * 例如:123. ... -
最长平台问题
2011-01-01 21:03 807/* * 已知一个已经从小到大排列好的数组,说这个数组中的 ... -
寻找数组中第二大数
2011-01-01 20:02 1538/* * 写一个函数找出一个整数数组中,第二大的数(mic ... -
在父串中寻找子串首次出现的位置
2011-01-01 15:30 1170/* * 在父串中寻找子串首次出现的位置(实现类似于jav ... -
比较两个字符串大小(带大小写的比较)
2011-01-01 14:20 1471/* * 给出一个函数,原型为int compare(ch ... -
从字符串中找出连续最长的数字串
2011-01-01 13:58 1354/* * 写一个函数,它的原型是int continumm ... -
判断两个有序数组中是否存在相同的数字(要求时间复杂度为O(n))
2011-01-01 11:50 1441/* * 判断两个有序数组中是否存在相同的数字(要求时间复 ... -
将给定的一个数字字符串转换成整数
2011-01-01 11:29 1701/* * 请编写一个函数,该函数将给定的一个数字字符串转换 ... -
将一个整数转换为字符串
2011-01-01 10:54 1089/* * 请编写一个函数,该函数将给定的一个整数转换为字符 ... -
猴子吃桃问题
2010-12-31 14:01 763/* * 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了 ... -
用c语言实现顺序队列(采用少用一个存储空间的方式解决假溢出问题)
2010-12-31 12:32 1325/* * 用c语言实现顺序队列(采用少用一个存储空间的方式 ... -
用c语言实现顺序队列(采用计数器解决假溢出问题)
2010-12-31 11:51 1113/* * 用c语言实现顺序队列(采用计数器解决假溢出问 ... -
用c语言实现顺序队列(采用标志位解决假溢出问题)
2010-12-30 17:42 2145/* * 用c语言实现顺序队列(采用标志位解决假溢出问题解 ... -
用c语言实现顺序队列(存在假溢出现象,即队列中有空间却无法插入)
2010-12-30 15:03 1656/* * 用c语言实现顺序队列(存在假溢出现象,即队列中有 ...
相关推荐
python 实现 用两个栈实现队列
用两个栈实现队列.md
title: 剑指Offer-用两个栈实现队列subtitle: 用两个栈实现队列categories: 剑指Offer用两个栈实现队列题目描述用两个栈来实现一
两个栈 实现一个队列
232. 用两个栈实现队列232. 用栈实现队列题目描述解题思路/** Initialize your data structure here. *//** R
9. 用两个栈实现队列题目链接牛客网题目描述用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。当元素要出栈时,需要先进入 out 栈,此时元素出栈
用两个栈实现队列思路很简单:入栈只入栈1出栈只从栈2出,出栈时如果栈2右元素则顶部元素出栈,否则让栈1元素全部压入到栈2,然后栈2最上面元素出栈代码如下:
队列的两种实现方式一种是数组一种是栈,此处介绍如何将用两个栈来实现一个队列
队列的声明如下,请实现它的两个函数 appendTail 和deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元示例:
用量个栈实现一个队列,使其可以有进队和出队的操作。
使用面向对象技术,应用两个队列来实现一个栈,并且采用了类模板技术,实现的栈属于栈模板!
要求用两个栈{stack1,stack2}实现一个队列,也就是说我们需要使用栈的push和pop功能来构造队列的push和pop功能。 栈我们用列表表示,相应的功能使用append和pop函数实现。 队列的push功能: 使用stack1来存储元素,...
用两个栈实现一个队列的功能?要求给出算法和思路
自己写的代码,有详细的注释,供大家参考。
本文实例讲述了PHP使用两个栈实现队列功能的方法。分享给大家供大家参考,具体如下: 问题 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解决思路 两个栈。出栈的时候,如果栈2不为...
题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解题思路参考:https://blog.csdn.net/flower_48237/article/details/104055970
5.用两个栈实现一个队列题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。* @desc 用两个栈实现队列public class Solutio
1、熟练掌握栈和队列的基本操作在两种存储结构上的实现。 2、会用栈和队列解决简单的实际问题。 二、实验内容 题目:试写一个算法,判断依次读入的一个以@为结束符的字符序列,是否为回文。所谓“回文“是指正向读...