• C++编程练习(4)----“实现简单的栈的链式存储结构“


    如果栈的使用过程中元素数目变化不可预测,有时很小,有时很大,则最好使用链栈;反之,如果它的变化在可控范围内,使用顺序栈会好一些。

    简单的栈的链式存储结构代码如下:

    /*LinkStack.h*/
    #include<iostream>
    #define OK 1
    #define ERROR 0
    #define TRUE 1
    #define FALSE 0
    typedef int SElemType;
    typedef int Status;
    
    class StackNode{
    public:
    	StackNode():data(0) {};
    	SElemType data;
    	StackNode *next;
    };
    
    class LinkStack{
    public:
    	LinkStack():count(0){};
    	StackNode* top;
    	int count;
    	Status Push(SElemType e);	/*进栈操作*/
    	Status Pop(SElemType *e);	/*出栈操作*/
    	Status ShowStack() const;
    };
    
    Status LinkStack::Push(SElemType e)
    {
    	StackNode* s=new StackNode;
    	s->data=e;
    	s->next=top;
    	top=s;
    	count++;
    	return OK;
    }
    Status LinkStack::Pop(SElemType *e)
    {
    	if (count<=0)
    		return ERROR;
    	StackNode* p=new StackNode;
    	*e=top->data;
    	p=top;
    	top=top->next;
    	delete p;
    	count--;
    	return OK;	
    }
    Status LinkStack::ShowStack() const
    {
    	if (count<=0)
    		return FALSE;
    	StackNode* p;
    	p=top;
    	int k=count;
    	std::cout<<"按从栈顶至栈底依次显示:";
    	while(k)
    	{
    		std::cout<<p->data<<" ";
    		p=p->next;
    		k--;
    	}
    	std::cout<<std::endl;
    	return OK;
    }

    另:

    栈的应用:

    1、递归

    2、四则运算表达式求值。

    分两步:

    step1、中缀表达式转后缀表达式(栈用来进出运算的符号);

    step2、对后缀表达式进行运算(栈用来进出运算的数字)。

  • 相关阅读:
    转:理想主义终结年代的七种兵器
    基础地理空间框架
    coldplay 全集下载
    S40 用google sync同步通讯录(转)
    分享一个关于Steve Jobs演讲的分析
    转:我们时代的思想责任与尊严
    nginx 视频流
    vue 使用路由重复跳转同一页面
    批处理文件编写
    ZBB – ZERO Bug Bounce
  • 原文地址:https://www.cnblogs.com/fengty90/p/3768859.html
Copyright © 2020-2023  润新知