zoukankan      html  css  js  c++  java
  • 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、对后缀表达式进行运算(栈用来进出运算的数字)。

  • 相关阅读:
    httpclient详细介绍
    HttpClient
    JAVA WEB项目中各种路径的获取
    mvn 如何添加本地jar包 IDEA pom.xm
    jdbc连接数据库的步骤
    PostgreSQL 类型转换 -除法
    PostgreSQL学习手册
    前端工程师必备技能汇总
    github上一些觉得对自己工作有用的项目收集
    Ninja:Java全栈Web开发框架-Ninja中文网
  • 原文地址:https://www.cnblogs.com/fengty90/p/3768859.html
Copyright © 2011-2022 走看看