谈闻财经 > 股票 > stack函数用法-stack常用函数

stack函数用法-stack常用函数

2024-06-16 21:37:21股票

股票市场是一个需要不断学习和适应的市场,投资者需要及时了解市场动态和公司信息,以便做出正确的投资决策。接下来,谈闻财经将重点带大家了解stack函数用法,希望可以帮到你。

分别写函数实现初始化栈、入栈、出栈、判断栈空、判断栈满。例如入栈序列为1 2 3 4 5,出栈则为5 4 3 2 1

优质回答1、初始化栈

/*功能:初始化栈

*函数名:InitStack

*返回值:void

*/

void InitStack(stack *p)

{

p->top=-1;

}

2、判断栈为满

/*功能:判断栈为满

*函数名:IsFull

*返回值:为满——真1,非满——假0

*/

BOOL IsFull(stack *p)

{

if(MAXSIZE-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

3、判断栈为空

/*功能:判断栈为空

* 函数名:IsEmpty

*返回值:为空——真1,非空——假0

*/

BOOL IsEmpty(stack *p)

{

if(-1==p->top)

{

return TRUE;

}else

{

return FALSE;

}

}

4、进栈

/*功能:进栈

*函数名:push

*返回值:成功TRUN 失败FALSE

*注:不能为满,否则进栈失败

*/

BOOL push(stack *p,StackType data)//p=&s

{

//判断栈是否为满

if(TRUE==IsFull(p))//为满

{

return FALSE;//返回失败

}

p->buf[++p->top]=data;

return TRUE;//返回成功

}

5、出栈

/*功能:出栈

*函数名:pop

*返回值:出栈成功TRUE 失败FALSE

*/

BOOL pop(stack *p,StackType *pd)

{

//判断是否为空,为空出栈无意义

if(TRUE==IsEmpty(p))

{

return FALSE;//出栈失败

}

*pd=p->buf[p->top--];//优先级->大于--

return TRUE;//出栈成功

}

扩展资料:

主函数:

void main()

{

//定义变量:类型 变量名

//struct st s;

struct st s;//分配空间

//初始化

InitStack(&s);

int num=0;

printf("请输入");

scanf("%d",&num);

//求二进制

while(num!=0)

{

//将余数入栈

if(FALSE==push(&s,num%2))

{

return;//结束

}

num/=2;

}

//将二进制结果取出来

char value=0;

while(FALSE!=pop(&s,&value))

{

printf("%d",value);

}

printf("n");

}

帮忙吧这个伪代码改成C++上课运行的代码

优质回答改好了,顺便添加一个测试函数main

#include <stack>

#include <stdio.h>

using namespace std;

int Rr_Ls(stack<char> s)

{

char x;

scanf("%c",&x);

while(x != '\n')

{

s.push(x); // 入栈

scanf("%c",&x);

}

while(s.empty() != true)

{

x = s.top(); // 输出栈顶元素,出栈分两步,这为第一步

s.pop(); // 移除栈顶元素,出栈第二步

printf("%c",x);

}

}

int main(int argc, char *argv[])

{

stack<char> a; //声明一个堆栈 //具体用法百度 C++ 标准库

Rr_Ls(a);

return 0;

}

堆栈stack常用函数:

empty() 堆栈为空则返回真

pop() 移除栈顶元素

push() 在栈顶增加元素

size() 返回栈中元素数目

top() 返回栈顶元素

matlab中,如何使用堆栈

优质回答Matlab源代码:堆栈类Stack的实现

-- by benbenknight

自己编写了一个堆栈类Stack,供大家分享。

类的成员函数清单如下:

Stack STACK 堆栈对象Stack的构造函数

auto_inc AUTO_INC 自动扩充堆栈容量

display DISPLAY 显示堆栈内容

empty EMPTY 清空堆栈

init INIT 初始化堆栈

isempty ISEMPTY 判断堆栈是否为空

pop POP 将栈顶元素弹出堆栈

push PUSH 将元素x压入堆栈

subsasgn SUBSASGN 对堆栈数据成员赋值

subsref SUBSREF 读取堆栈的数据成员

top TOP 返回栈顶元素

源代码清单如下:

(由于无法添加附件,只能出此下策,请大家原谅啊)

%-----------------------------------------------

% 文件【test_stack.m】的代码清单:

%-----------------------------------------------

% test_stack.m 测试堆栈对象

a = Stack;

a = init(a,10);

arr = [1 2 3];

for i=1:length(arr)

a = push(a,arr(i));

a.top

a.stack

end

while ~isempty(a)

[a,x] = pop(a);

x

a.top

a.stack

end

%-----------------------------------------------

% 文件【@Stack\auto_inc.m】的代码清单:

%-----------------------------------------------

function a = auto_inc(a)

% AUTO_INC 自动扩充堆栈容量

%

% a = auto_inc(a)

%

% benbenknight

if a.step_size<=0

a.step_size = 100;

end

a.max_size = a.max_size + a.step_size;

a.stack = [a.stack;zeros(a.step_size,1)];

%-----------------------------------------------

% 文件【@Stack\display.m】的代码清单:

%-----------------------------------------------

function display(p)

% DISPLAY 显示堆栈内容

%

% display(p)

%

% benbenknight

disp(struct(p));

%-----------------------------------------------

% 文件【@Stack\empty.m】的代码清单:

%-----------------------------------------------

function a = empty(a)

% EMPTY 清空堆栈

%

% a = empty(a)

%

% benbenknight

a.top = 0;

%-----------------------------------------------

% 文件【@Stack\init.m】的代码清单:

%-----------------------------------------------

function a = init(a,sz)

% INIT 初始化堆栈

%

% a = init(a,sz)

% sz:堆栈的初始容量大小。

%

% benbenknight

if sz>0

a.max_size = sz;

a.stack = zeros(sz,1);

else

error('Invalid stack size');

end

%-----------------------------------------------

% 文件【@Stack\isempty.m】的代码清单:

%-----------------------------------------------

function b = isempty(a)

% ISEMPTY 判断堆栈是否为空

%

% b = isempty(a)

% b:如果堆栈为空,返回1;否则,返回0。

%

% benbenknight

if a.top<=0

b = 1;

else

b = 0;

end

%-----------------------------------------------

% 文件【@Stack\pop.m】的代码清单:

%-----------------------------------------------

function [a,x] = pop(a)

% POP 将栈顶元素弹出堆栈

%

% [a,x] = pop(a)

% x:输出参数,保存弹出的栈顶元素

%

% benbenknight

if isempty(a)

x = [];

else

x = a.stack(a.top);

a.stack(a.top) = 0;

a.top = a.top-1;

end

%-----------------------------------------------

% 文件【@Stack\push.m】的代码清单:

%-----------------------------------------------

function a = push(a,x)

% PUSH 将元素x压入堆栈

%

% a = push(a,x)

%

% benbenknight

% 判断是否需要自动增长堆栈空间

if a.top == a.max_size

a = auto_inc(a);

end

% 添加

a.top = a.top + 1;

a.stack(a.top) = x;

%-----------------------------------------------

% 文件【@Stack\Stack.m】的代码清单:

%-----------------------------------------------

function a = Stack(varargin)

% STACK 堆栈对象Stack的构造函数

%

% a = Stack(varargin)

%

% benbenknight

switch nargin

case 0

a.top = 0; % 栈顶元素的下标

a.max_size = 0; % 堆栈的最大容量

a.step_size = 100; % 堆栈自动扩大容量时的步长

a.stack = []; % 堆栈元素数组

a = class(a,'Stack');

case 1

if isa(varargin{1},'Stack')

a = varargin{1};

else

error('Wrong argument type')

end

otherwise

error('Wrong Number of input arguments')

end

%-----------------------------------------------

% 文件【@Stack\subsasgn.m】的代码清单:

%-----------------------------------------------

function a = subsasgn(a,index,val)

% SUBSASGN 对堆栈数据成员赋值

%

% benbenknight

switch index(1).type

case '.'

switch index(1).subs

case 'top'

a.top = val;

case 'max_size'

a.max_size = val;

case 'step_size'

a.step_size = val;

case 'stack'

if length(index)==2

a.stack(index(2).subs{:}) = val;

else

a.stack = val;

end

end

end

%-----------------------------------------------

% 文件【@Stack\subsref.m】的代码清单:

%-----------------------------------------------

function b = subsref(a,index)

% SUBSREF 读取堆栈的数据成员

%

% benbenknight

switch index(1).type

case '.'

switch index(1).subs

case 'top'

b = a.top;

case 'max_size'

b = a.max_size;

case 'step_size'

b = a.step_size;

case 'stack'

if length(index)==2

b = a.stack(index(2).subs{:});

else

b = a.stack;

end

end

end

%-----------------------------------------------

% 文件【@Stack\top.m】的代码清单:

%-----------------------------------------------

function x = top(a)

% TOP 返回栈顶元素

% 注意,并不弹出堆栈

%

% x = top(a)

%

% benbenkight

if isempty(a)

x = [];

else

x = a.stack(a.top);

end

c++编程Stack(类与对象)

优质回答这样行不?:

class CStack

{

public:

CStack();//建立一个10个元素的栈

CStack(int s);//建立一个具有 s个元素的栈

CStack(CStack &r_s);//注意,没有重载赋值操作符

int get(int index);//返回下标为index 的栈元素

void push(int n);//进栈,top加1,把n的值存入栈顶

int isEmpty();//判断栈是否为空,空则返回1,否则返回0

int isFull();//判断栈是否是满的,空则返回1,否则返回0

int pop();//出栈,返回栈顶元素,top减1

~CStack();//析构函数,释放在构造时申请的空间

private:

int *a;

int size;//栈的大小

int top;//指向栈顶

};

#include <iostream>

using namespace std;

void PopAll(CStack &stack)

{

while (!stack.isEmpty())

cout << stack.pop() << " ";

cout << endl;

}

CStack::CStack() :size(10), top(-1)

{

cout << "Constructor" << endl;

a = new int[size];

}

CStack::CStack(int s) : size(s), top(-1)

{

cout << "Constructor" << endl;

a = new int[size];

}

CStack::CStack(CStack &r_s) : size(r_s.size), top(r_s.top)

{

cout << "copy Constructor" << endl;

a = new int[size];

memcpy(a, r_s.a, size * sizeof(int));

}

CStack::~CStack(){  PopAll(*this);cout << "Distructor" << endl; delete[] a; }

int CStack::get(int index){

if (index >= 0 && index < top)

return a[index];

else return -1;//-1作为返回错误?还是抛出异常?

}

void CStack::push(int n){

if (!isFull())

a[++top] = n;

}

int CStack::pop(){

if (!isEmpty())

return a[top--];

}

int CStack::isEmpty(){

if (-1 == top) return 1;

else return 0;

}

int CStack::isFull(){

if (top + 1 == size) return 1;

else return 0;

}

#include <iostream>

using namespace std;

void GetNDataToStack(CStack &stack, unsigned int n)

{

while (n--)

{

int DataGet;

cin >> DataGet;

stack.push(DataGet);

}

}

int main()

{

int nLoop;

cout << "输入要构造几组数据:";

cin >> nLoop;

for (int index = 0; index < nLoop; ++index)

{

cout <<"输入要多少个数据存储:";

unsigned int nDataCount;

cin >> nDataCount;

CStack stack(nDataCount);

GetNDataToStack(stack, nDataCount);

}

return 0;

}

运行效果:

看完本文,相信你已经得到了很多的感悟,也明白跟stack函数用法这些问题应该如何解决了,如果需要了解其他的相关信息,请点击谈闻财经的其他内容。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息储存空间服务,不拥有所有权,不承担相关法律责任。如有发现本站涉嫌抄袭侵权/违法违规的内容,请发送邮件,一经查实,本站将立刻删除。

猜你喜欢

  • 老牌绩优股九芝堂被ST的启示!股票

    老牌绩优股九芝堂被ST的启示!

    昨天,一则九芝堂即将被st特别处理的消息可谓是证券市场一个不小的新闻,公司被容诚会计事务所出具了否定意见的《内部控制审计报告》,按照规定今...

    2024-06-16 111
  • 韵达股份002865股票

    韵达股份002865

    韵达股份002865人工智能在医疗保健中的应用人工智能(AI)正在改变医疗保健行业的方方面面,从诊断和治疗到患者护理和药物发现。随着数据的爆炸式增...

    2024-06-16 68
  • 中晶科技下跌5.21%,报34.02元/股股票

    中晶科技下跌5.21%,报34.02元/股

    6月13日,中晶科技盘中下跌5.21%,截至14:32,报34.02元/股,成交3.83亿元,换手率17.52%,总市值34.24亿元。资料显示,浙江中晶科技股份有限公司位于浙江省长...

    2024-06-16 150
  • 怎样查股票代码股票

    怎样查股票代码

    怎样查股票代码答知道股票名子的话,在行情软件里可以敲每个字的第一位字母,就可以出现相关股票的代码,仅供参考股票怎么买?股票代码在哪里查询...

    2024-06-16 145
  • 002698博实股份有限公司股票

    002698博实股份有限公司

    002698博实股份有限公司智能革命:技术如何塑造我们的未来当今世界正以前所未有的经历着技术变革。从人工智能到自动化,再到物联网,技术正在重塑我...

    2024-06-16 157
  • 武钢股份股票行情分时股票

    武钢股份股票行情分时

    武钢股份股票行情分时## 人工智能的崛起:机遇与挑战随着技术不断创新,人工智能(AI)已成为现代世界不可或缺的一部分。它在各个行业都带来了变革,从...

    2024-06-16 164
  • 鼎龙文化退市吗股票

    鼎龙文化退市吗

    鼎龙文化退市吗最佳答案鼎龙文化已经退市。鼎龙文化于2020年2月14日进入退市整理期,随后于2020年4月14日被实行强制退市。该公司股票代码为600054,是一...

    2024-06-16 50
  • 80后小时候去游戏厅玩的一个用拳一个用掌一个用腿的游戏教什么啊股票

    80后小时候去游戏厅玩的一个用拳一个用掌一个用

    80后小时候去游戏厅玩的一个用拳一个用掌一个用腿的游戏教什么啊答暴力风暴为什么爱柯迪股票不涨答从估值上看是指不上很大。小盘股。股价目前一直...

    2024-06-16 135
  • 科创板企业往往具有()的特点,且可能存在首次公开发行前最近()个会计年度未能连续盈利,公开发行并上股票

    科创板企业往往具有()的特点,且可能存在首

    科创板企业往往具有()的特点,且可能存在首次公开发行前最近()个会计年度未能连续盈利,公开发行并上答科创板企业所处行业和业务往往具有研发...

    2024-06-16 193
  • 9月4日庚星股份(600753)龙虎榜数据:游资炒股养家、北京中关村上榜股票

    9月4日庚星股份(600753)龙虎榜数据:游资炒股养

    沪深交易所2023年9月4日公布的交易公开信息显示,庚星股份(600753)因有价格涨跌幅限制的日价格振幅达到15%的前五只证券登上龙虎榜。此次是近5个交易日...

    2024-06-16 174
  • 网络安全概念股有哪些股票

    网络安全概念股有哪些

    网络安全概念股有哪些最佳答案卫士通(002268):作为市场公认的网络安全龙头股,公司提供全系列的密码产品、安全产品及安全系统,包括核心的加密模...

    2024-06-16 78
  • 日发精机东方财富股票

    日发精机东方财富

    日发精机东方财富最佳答案①、日发精机002520,10.32元,-0.45 -4.18%,2021-12-07 15:00:00 北京时间 已收盘。东方财富网用户主要为证券、基金及期货投资者,具...

    2024-06-16 116
  • 盐龙头股?股票

    盐龙头股?

    盐龙头股?优质回答 盐龙头股是指在盐业行业中市场占有率较高、规模较大、具有较强竞争力的龙头企业。在中国,盐业行业的龙头企业是中国盐业集团...

    2024-06-16 128
  • 消防器材股票龙头股票

    消防器材股票龙头

    消防器材股票龙头人工智能与人类创造力的融合人工智能(AI)的兴起为人类创造力开辟了新的可能性。随着机器学习和自然语言处理等强大技术的出现,...

    2024-06-16 92
  • 甘肃在北京比较有名的人股票

    甘肃在北京比较有名的人

    甘肃在北京比较有名的人最佳答案甘肃在北京比较有名的人包括:1. 段永基,甘肃靖远人。 四通集团公司董事长,前北京中关村科技发展(控股)股份有限...

    2024-06-16 118
  • 嘉友国际股票怎么样股票

    嘉友国际股票怎么样

    嘉友国际股票怎么样人工智能在现代生活中的变革力量在当今技术主导的世界中,人工智能 (AI) 已成为推动现代生活的关键力量。从自动化任务到增强决策...

    2024-06-16 195
  • 中国石化股票是涨是跌?股票

    中国石化股票是涨是跌?

    中国石化股票是涨是跌?优质回答600028中石化受益于资源价格改革的向上调整,中长期看好 积极做多,耐心持有; 投资中国美好的未来,分享经济发展的快乐...

    2024-06-16 59
  • 金种子酒业亏损2207万,多元化尝试与华润改革受质疑股票

    金种子酒业亏损2207万,多元化尝试与华润改革受

    金种子酒(600199)业绩低迷引发关注营收增长难掩亏损现实。安徽金种子酒业2023年实现营收14.69亿元,同比增长23.92%,然而净亏损约2207万元,表明公司盈利能...

    2024-06-16 130
  • 什么牌子的电动汽车卖得最好股票

    什么牌子的电动汽车卖得最好

    什么牌子的电动汽车卖得最好最佳答案江苏那个道爵得电动汽车就卖得挺火的呀,除了在国内有数十个经销商销售量上万。还与欧美各国成功签订了超万两...

    2024-06-16 83
  • 中国巨石股份有限公司在哪里股票

    中国巨石股份有限公司在哪里

    中国巨石股份有限公司在哪里科技进步对现代社会的双重影响在当今飞速发展的信息时代,科技进步正以一种前所未有的改变着我们生活的方方面面。它带...

    2024-06-16 50