华南农业大学数据结构上机答案实验 下载本文

内容发布更新时间 : 2024/12/23 10:41:34星期一 下面是文章的全部内容请认真阅读。

华南农业大学数据结构上机答案实验

8583 顺序栈的基本操作 时间限制:1000MS 内存限制:1000K 提交次数:530 通过次数:212

题型: 编程题 语言: 无限制

Description

创建一个空的顺序栈,并实现栈的入栈、出栈、返回栈的长度、返回栈顶元素、栈的遍历等基本算法。请将下

#include<malloc.h> #include<stdio.h> #define OK 1 #define ERROR 0

#define STACK_INIT_SIZE 100 // 存储空间初始分配量 #define STACKINCREMENT 10 // 存储空间分配增量

typedef int SElemType; // 定义栈元素类型

typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等

struct SqStack {

SElemType *base; // 在栈构造之前和销毁之后,base的值为NULL SElemType *top; // 栈顶指针

int stacksize; // 当前已分配的存储空间,以元素为单位 }; // 顺序栈

Status InitStack(SqStack &S) {

// 构造一个空栈S,该栈预定义大小为STACK_INIT_SIZE // 请补全代码

S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType)); if(!S.base) return ERROR; S.top=S.base;

S.stacksize=STACK_INIT_SIZE; return OK; }

Status Push(SqStack &S,SElemType e) {

// 在栈S中插入元素e为新的栈顶元素 // 请补全代码

if(S.top-S.base>=S.stacksize)

{S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));

if(!S.base) return ERROR; S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; }

*S.top++=e; return OK; }

Status Pop(SqStack &S,SElemType &e) {

// 若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR // 请补全代码

if(S.top==S.base) return ERROR;

e=*--S.top; return OK; }

Status GetTop(SqStack S,SElemType &e) {

// 若栈不空,则用e返回S的栈顶元素,并返回OK;否则返回// 请补全代码

if(S.top==S.base) return ERROR; e=*(S.top-1); return OK; }

int StackLength(SqStack S) {

// 返回栈S的元素个数 // 请补全代码 return S.top-S.base; }

Status StackTraverse(SqStack S) {

ERROR