1 / 13
文档名称:

实验二栈及队列.docx

格式:docx   大小:28KB   页数:13页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验二栈及队列.docx

上传人:泰山小桥流水 2022/2/28 文件大小:28 KB

下载得到文件列表

实验二栈及队列.docx

相关文档

文档介绍

文档介绍:实验二栈及行列
实验二栈及行列
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)遍历链