期末数据结构实验考察我选的是顺序栈的算法实现,结合其他博客便创作了这篇文章,以供大家参考。如有错误,请斧正!!!
一、设计目的与内容
顺序栈的算法实现:重点在于理解栈的先进后出的特性,回顾课程中对栈的具体应用,例如数制转换、表达式的求值、括号匹配等应用。
二、算法的基本思想
引入了栈底指针base!
抽象类型定义:
typedef struct {
ElemType *base; // 栈底指针
ElemType *top; // 栈顶指针
int stack_size; // 栈的最大长度
} SqStack;
三、主要功能设计与实现
- void menu()
功能:显示菜单
void menu()
{
printf("==========================顺序栈的算法实现==========================\n");
printf("**********************1.创建新栈 2.遍历栈**********************\n");
printf("**********************3.取栈顶 4.销毁栈**********************\n");
printf("**********************5.取栈长度 0.退出**********************\n");
}
- Create(S)
功能:先初始化然后再创建新栈
Status Create(SqStack *S)
{
int n,e,i;
printf("初始化栈S......\n");
InitStack(S);
printf("成功初始化\n");
printf("输入栈的长度 :");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
printf("请输入第%d个元素:",i);
scanf("%d", &e);
PushStack(S, e);
}
printf("栈为空吗?\n");
if (EmptyStack(S)) {
printf("Yes!\n");
} else {
printf("No!\n");
}
return 1;
- StackTraverse(S)
Status StackTraverse(SqStack *S) {
ElemType *p;
if (S->top == S->base) {
printf("Stack is NULL.\n");
return 0;
}
p = S->top;
// 由栈顶依次向下遍历
printf("栈顶到栈低元素依次为:");
while (p > S->base) {
p--

最低0.47元/天 解锁文章
1212

被折叠的 条评论
为什么被折叠?



