文档介绍:实验二栈及行列
实验二栈及行列
1 / 13
实验二栈及行列
实验二 栈和行列
1、实验目的:
1) 熟习栈的特色(先进后出)及栈的基本操作,如入栈、出栈等,掌握栈的基本操作在栈的次序储存构造和链式储
free(s->base);
s->base = NULL;
s->top = NULL;
s->stacksize=0;
return Ok;
}
获取栈顶元素
Status GetTop(SqStack *s, SElemType &e)
{
if(s->top == s->base) return Error;
e = *(s->top - 1);
return Ok;
}
// 压栈
Status Push(SqStack *s, SElemType e)
{
if(s->top - s->base >= s->stacksize)
{
实验二栈及行列
实验二栈及行列
10 / 13
实验二栈及行列
s->base = (SElemType *)realloc(s->base,
(s->stacksize
+ STACKINCREMENT)*
实验二栈及行列
实验二栈及行列
13 / 13
实验二栈及行列
sizeof(SElemType));
if(!s->base)
{
实验二栈及行列
实验二栈及行列
13 / 13
实验二栈及行列
puts(" 储存空间分派失败!
return Error;
");
实验二栈及行列
实验二栈及行列
13 / 13
实验二栈及行列
}
s->top = s->base + s->stacksize;
s->stacksize += STACKINCREMENT;
实验二栈及行列
实验二栈及行列
13 / 13
实验二栈及行列
}
*s->top++
return Ok;
= e;
实验二栈及行列
实验二栈及行列
13 / 13
实验二栈及行列
}
// 弹栈
Status Pop(SqStack *s, SElemType *e)
{
if(s->top == s->base) return Error;
--s->top;
*e = *(s->top);
return Ok;
}
实验二栈及行列
实验二栈及行列
13 / 13
实验二栈及行列
遍历栈
Status StackTraverse(SqStack *s,Status(*visit)(SElemType))
{
SElemType *b = s->base;
SElemType *t = s->top;
while(t > b)
visit(*b++);
printf("\n");
return Ok;
}
Status visit(SElemType c)
{
printf("%d ",c);
return Ok;
}
int main()
{
SqStack a;
SqStack *s = &a;
SElemType e;
InitStack(s);
int n;
puts(" 请输入要进栈的个数: ");
scanf("%d", &n);
while(n--)
{
int m;
scanf("%d", &m);
Push(s, m);
}
StackTraverse(s, visit);
puts("");
Pop(s, &e);
printf("%d\n", e);
printf("%d\n", *s->top);
Destroy(s);
return 0;
}
实验二栈及行列
实验二栈及行列
17 / 13
实验二栈及行列
[ 实验 2] 栈的链式表示和实现
实验内容与要求 :
编写一个程序实现链栈的各样基本运算,并在此基础上设计一个主程序,达成以下功能:
1)初始化链栈
2)链栈置空
3)入栈
4)出栈
5)取栈顶元素
6)遍历链