其他算法的描述省略,参见实现要求说明。
2.实现要求:
对顺序栈的各项操作一定要编写成为 C(C++)语言函数,组合成模块化的形式,
每个算法的实现要从时间复杂度和空间复杂度上进行评价。
.“初始化栈算法”操作结果:构造一个空栈 S;
.“销毁栈算法”操作结果:销毁栈 S,S 不再存在;
.“置空栈算法” 操作结果:把 S 置为空栈;
“判是否空栈算法”. 操作结果:若栈 S 为空栈,则返回 TRUE,否则返回 FALSE;
.“求栈的长度算法” 操作结果:返回 S 的元素个数,即栈的长度;
.“取栈顶元素算法” 操作结果:若栈不空,则用 e 返回 S 的栈顶元素,并返
回 OK;否则返回 ERROR;
.“入栈算法”操作结果:插入元素 e 为新的栈顶元素
.“出栈算法”操作结果:若栈不空,则删除 S 的栈顶元素,用 e 返回其值,并
返回 OK;否则返回 ERROR;
.“实现十进制数与八进制数的转换算法”操作结果:输入任意一个非负的十进
制数,输出对应的八进制数;
对链式队列的各项操作一定要编写成为 C(C++)语言函数,组合成模块化的形
式,每个算法的实现要从时间复杂度和空间复杂度上进行评价。
.“初始化空队算法”操作结果:构造一个空队列 Q;
.“销毁队列算法”操作结果:销毁队列 Q(无论空否均可);
.“空队列算法” 操作结果:将 Q 清为空队列;
.“判队列是否为空算法” 操作结果:若 Q 为空队列,则返回 TRUE,否则返回
FALSE;
.“求队列的长度算法” 操作结果:求队列的长度,返回队列中结点的个数;
.“取队头元素算法” 操作结果:若队列不空,则用 e 返回 Q 的队头元素,并返回
OK,否则返回 ERROR;
. “入队算法”操作结果:插入元素 e 为 Q 的新的队尾元素;
.“出队算法”操作结果:若队列不空,删除 Q 的队头元素,用 e 返回其值,并返回
OK,否则返回 ERROR;
三、参考程序
(一)顺序栈
1.文件 SqStackDef.h 中实现了栈的顺序存储表示
#define STACK_INIT_SIZE 10 /* 存储空间初始分配量*/
#define STACKINCREMENT 2 /* 存储空间分配增量*/
typedef struct SqStack
{
SElemType *base; /* 在栈构造之前和销毁之后,base 的值为 NULL */
word 文档 可自由复制编辑
评论0
最新资源