永发信息网

求助数据结构:计算机在运行递归程序时,要用到()提供的栈。

答案:1  悬赏:20  手机版
解决时间 2021-11-29 02:29
求助数据结构:计算机在运行递归程序时,要用到()提供的栈。
最佳答案
不明白你的问题是什么意思,如果是栈的话 我这有段抄书的,你不妨看一下
一、栈的定义
栈是限定仅在表尾进行插入或删除操作的线性表。
栈的表尾称为栈顶,表头称为栈底,不含元素的空表称为空栈。
栈的抽象数据类型定义:
ADT Stack{
数据对象:D={ai|ai(- ElemSet,i=1,2,...,n,n>=0}
数据关系:R1={|ai-1,ai(- D,i=2,...,n}
基本操作:
InitStack(&S) 构造一个空栈S
DestroyStack(&S) 栈S存在则栈S被销毁
ClearStack(&S) 栈S存在则清为空栈
StackEmpty(S) 栈S存在则返回TRUE,否则FALSE
StackLength(S) 栈S存在则返回S的元素个数,即栈的长度
GetTop(S,&e) 栈S存在且非空则返回S的栈顶元素
Push(&S,e) 栈S存在则插入元素e为新的栈顶元素
Pop(&S,&e) 栈S存在且非空则删除S的栈顶元素并用e返回其值
StackTraverse(S,visit())栈S存在且非空则从栈底到栈顶依次对S的每个数据元素调用函数visit()一旦visit()失败,则操作失败
}ADT Stack
二、栈的表示和实现
栈的存储方式:
1、顺序栈:利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置
2、链栈:利用链表实现
顺序栈的类C语言定义:
typedef struct{
SElemType *base;
SElemType *top; //设栈顶栈底两指针的目的是便于判断栈是否为空
int StackSize; //栈的当前可使用的最大容量.
}SqStack;
顺序栈的的模块说明:
struct STACK {
SElemType *base;
SElemType *top;
int stacksize;
};
typedef struct STACK Sqstack;
Status InitStack(SqStack &S);
Status DestroyStack(SqStack &S);
Status ClearStack(SqStack &S);
Status StackEmpty(SqStack S);
int StackLength(SqStack S);
Status GetTop(SqStack S,SElemType &e);
Status Push(SqStack &S,SElemType e);
Status Pop(SqStack &S,SElemType &e);
Status StackTraverse(SqStack S,Status (*visit)());

Status InitStack(SqStack &S) {
S.base=(SelemType *)malloc(STACK_INIT_SIZE *sizeof(ElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base;
S.stacksize=STACK_INI_SIZE;
return OK;
}//IniStack
Status DestroyStack(SqStack &S); {
}//DestroyStack
Status ClearStack(SqStack &S); {
S.top=S.base;
} //ClearStack
Status StackEmpty(SqStack S); {
if(S.top==S.base) return TRUE;
else return FALSE;
} //StackEmpty
int StackLength(SqStack S); {
int i; SElemType *p;
i=0;
p=S.top;
while(p!=S.base) {p++; i++; }
} //stackLength
Status GetTop(SqStack S,SElemType &e); {
if(S.top==S.base) return ERROR;
e=*(S.top-1);
return OK;
} //GetTop
Status Push(SqStack &S,SElemType e); {
if(S.top - s.base>=S.stacksize) {
S.base=(ElemType *) realloc(S.base,
(S.stacksize + STACKINCREMENT) * sizeof(ElemType));
if(!S.base)exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
} //Push
Status Pop(SqStack &S,SElemType &e); {
if(S.top==S.base)
return ERROR;
e=*--S.top;
return OK;
}//Pop
Status StackTraverse(SqStack S,Status (*visit)()); {
}//StackTraverse
以上伪代码的C语言源码
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
诺基亚3100屏幕坏了,想把手机上的号码复制到S
去皮海鲜指的是什么钱?
完成句子(共10分 每小题2分)【小题1】你最
田径比赛为什么分室内与室外?如题 谢谢了
快手的名字叫兔牙大大,她的id是多少
某市人均居住面积为14.5平方米,计划在两年后
iphone6 plus请帮忙看下手机详细信息,型号:
mysql数据库实现全站搜索(3张表)
魔兽世界7.3里2017万圣节商人在哪 查布和多萝
[image]20 萨普皮卡跑不到80迈怎么回事儿?
撤单时提示股票委托不存在撤单失败如何处理?
7天无理由退换货,如果卖家说影响二次销售怎
《红妆》演唱by-徐良.的歌词。 其中有一句是
宇通客车ZK6858HA9报价多少
如何成为中国驻外机构工作人员
推荐资讯
决策树法的优缺点
谁有我的美腿姐姐那本书!主角叫叶凡
A={x丨lx-al<1}.B={x|lx-b l>1}a包含于b。则a
三四五六没有七 八九十勾没有圈 横批是多少
vivox20压弯
贾生中哪个词转折
高冷范英语翻译
云大和江南大学比较
日本的731在中国
盎的读音
尚未配妥剑 转眼便江湖,愿历尽千帆,归来仍少
重庆到成都三苏寺怎么走
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?