• 数据结构--栈


    一、顺序栈

    #include
    
    using namespace std;//使用std命名空间,省略后续代码中得到std::前缀
    
    #define OK 1//定义一个宏,使用OK表示操作成功
    #define ERROR 0//定义一个宏。使用ERROR表示操作失败
    #define OVERFLOW -2//定义宏,表示溢出操作
    #define MAXSIZE 100//定义宏,表示线性表可能得最大空间
    
    typedef int Status;//重命名为status用于表示函数的返回状态
    typedef int ElemType;//重命名为ElemType用于表示线性表数据元素类型
    
    
    typedef struct{
    	ElemType data[MAXSIZE];
    	int top;
    }SqStack;
    
    /**
     * @brief 初始化 
     * 
     * @param s 
     * 
     * @return 
     **/
    Status init(SqStack *s){
    	s->top=0;
    	return OK;
    }
    
    /**
     * @brief 入栈 
     * 
     * @param s 
     * @param e 
     * 
     * @return 
     **/
    Status push(SqStack *s,ElemType e){
    	if(s->top==MAXSIZE) return ERROR;
    	s->data[s->top]=e;
    	s->top++;
    	return OK;
    }
    
    /**
     * @brief 出栈 
     * 
     * @param s 
     * @param e 
     * 
     * @return 
     **/
    Status pop(SqStack *s,ElemType *e){
    	if(s->top==0){
    		//TODO
    		return ERROR;
    	}
    	s->top--;
    	*e=s->data[s->top];
    	return OK;
    }
    
    /**
     * @brief 取栈顶元素 
     * 
     * @param s 
     * 
     * @return 
     **/
    ElemType GetElem(SqStack s){
    	return s.data[s.top-1];
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73

    二、链栈

    #include
    #include
    using namespace std;//使用std命名空间,省略后续代码中得到std::前缀
    
    #define OK 1//定义一个宏,使用OK表示操作成功
    #define ERROR 0//定义一个宏。使用ERROR表示操作失败
    #define OVERFLOW -2//定义宏,表示溢出操作
    
    typedef int Status;//重命名为status用于表示函数的返回状态
    typedef int ElemType;//重命名为ElemType用于表示线性表数据元素类型
    
    typedef struct StackNode{
    	ElemType data;
    	struct StackNode *next;
    }StackNode,*LinkStack;
    
    /**
     * @brief 初始化 
     * 
     * @param linkstack 
     * 
     * @return 
     **/
    Status init(LinkStack &linkstack){
    	linkstack = new StackNode;
    	linkstack->next=NULL;
    	return OK;
    }
    
    /**
     * @brief 入栈 
     * 
     * @param l 
     * @param e 
     * 
     * @return 
     **/
    Status push(LinkStack &l,ElemType e){
    	StackNode *p=new StackNode;
    	p->data=e;
    	p->next=l;
    	l=p;
    	return OK;
    }
    
    /**
     * @brief 出栈 
     * 
     * @param l 
     * @param e 
     * 
     * @return 
     **/
    Status pop(LinkStack &l,ElemType &e){
    	if(l->next==NULL){
    		//TODO
    		return ERROR;
    	}
    	e=l->data;
    	StackNode *p;
    	p=l;
    	l=p->next;
    	delete p;
    	return OK;
    }
    
    /**
     * @brief 取栈顶 
     * 
     * @param l 
     * 
     * @return 
     **/
    ElemType GetElem(LinkStack l){
    	if(l->next!=NULL){
    		//TODO
    		return l->data;
    	}
    	return ERROR;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
  • 相关阅读:
    3.每天进步一点点-Python爬虫需要了解HTTP 请求报文
    .NET周刊【4月第1期 2024-04-07】
    对音频切分成小音频(机器学习用)
    Ubuntu(kylin)挂载iso文件和配置apt本地源
    linux,write:xxx has messages disabled 与 Ubuntu多用户同时登录的问题 ubuntu 20.04
    数据挖掘18大算法实现以及其他相关经典DM算法:决策分类,聚类,链接挖掘,关联挖掘,模式挖掘、图算法,搜索算法等
    前端新特性
    Ubuntu22.04 部署Mqtt服务器
    SegGPT: Segmenting Everything In Context论文笔记
    InnoDB行格式(4)行溢出和溢出页
  • 原文地址:https://blog.csdn.net/m0_46363470/article/details/134342509