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

更新时间:2023-03-17 22:27:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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

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 // 从栈顶到栈底依次输出栈中的每个元素

SElemType *p = (SElemType *)malloc(sizeof(SElemType)); p = S.top ; //请填空

if(S.top==S.base)printf("The Stack is Empty!"); //请填空 else {

printf("The Stack is: "); p--;

while(p>=S.base) //请填空 {

printf("%d ", *p); p-- ; //请填空 } }

printf("\\n"); return OK; } int main() { int a; SqStack S;

本文来源:https://www.bwwdw.com/article/ob8f.html

Top