数据结构--栈

一、顺序栈

#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];
}

二、链栈

#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;
}

你可能感兴趣的:(数据结构,数据结构,算法)