c++顺序栈基本操作实现

顺序栈定义

顺序栈是利用数组存储的栈,只能在栈顶进行出栈入栈,需要定义栈顶(top)、栈底(base)、栈长(stacksize)
注意:
表示空栈为 top==base;

表示栈满为 top-base==stacksize;

top指针指向栈顶元素上方

顺序栈的定义

// ---顺序栈的存储结构---
#define MAXSIZE 100
typedef int SElemType;
typedef struct
{
	SElemType* base;        //栈底
	SElemType* top;         //栈顶
	int stacksize;			//可用最大容量
}SqStack;

栈的初始化

Status InitStack(SqStack& S)
{//构造一个空栈S
	S.base = new SElemType[MAXSIZE];
	if (!S.base)
		return 0;
	S.top = S.base;
	S.stacksize = MAXSIZE;
	return 1;
}

入栈

Status Push(SqStack& S, SElemType e)
{
	if (S.top - S.base == S.stacksize)      //判断栈满
		return 0;
	*S.top++=e;                             //将e赋给S.top,top++
	return 1;
}

出栈

Status Pop(SqStack& S,SElemType &e)
{//删除栈顶元素,用e返回其值
	if (S.top == S.base )      //判断栈空
		return 0;
	e=*--S.top;
	return 1;
}

取栈顶元素

SElemType GetTop(SqStack& S)
{
	if (S.top == S.base)      //判断栈空
		return 0;
	return *(S.top - 1);      //用-1不会改变指针
}

栈的遍历输出

void printStack(SqStack S)
{
	printf("栈底:");
	SElemType* p = S.base;
	while (p != S.top)
	{
		printf("%d ", *p);
		p++;
	}
	printf("\n");
}

你可能感兴趣的:(c++,知识点总结,c++)