数据结构(C语言实现)之堆栈(顺序栈)

栈的表示和操作的实现

数据结构课本上的都是伪代码 不能直接运行

但是伪代码的好处还是很多的  便于理解 写作快

实际上稍微改一下就可以了

最重要的还是理解顺序栈这种数据结构

#include "stdio.h"
#include<stdlib.h>
#define maxsize 100
#define overflow 1
#define ok 1
#define error 1
#define SElemType int
#define Status int

typedef struct 
{
	SElemType *base;
	SElemType *top;
	int stacksize;
}SqStack;

Status InitStack(SqStack &S)                     //顺序栈的初始化
{
	//构造一个空栈S
	S.base=new SElemType[maxsize];				//为顺序栈动态分配一个最大容量为maxsize的数组空间
	if(!S.base) exit(overflow);					//存储分配失败
	S.top=S.base;								//top初始为base,空栈
	S.stacksize=maxsize;						//stacksize置为栈的最大容量maxsize
	return ok;
}

Status Push(SqStack &S,SElemType e)				//顺序栈的入栈
{
	//插入元素e为新的栈顶元素
	if(S.top-S.base==S.stacksize)  return error;//栈满
	*S.top++=e;									//元素e压入栈顶,栈顶指针加1
	return ok;
}

Status Pop(SqStack &S,SElemType &e)				//顺序栈的出栈
{
	if(S.top==S.base) return error;				//栈空
	e=*--S.top;									//栈顶指针减1,将栈顶元素赋给e
	return ok;
}

SElemType GetTop(SqStack S)						//取栈顶元素
{
	//返回S的栈顶元素,不修改栈顶指针
	if(S.top!=S.base)							//栈非空
		return *(S.top-1);						//返回栈顶元素的值,栈顶指针不变
}
int main(int argc, char* argv[])
{

	return 0;
}

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值