顺序栈的基本操作讲解
- 格式:docx
- 大小:28.05 KB
- 文档页数:7
遼穿紳範大學上机实验报告
学院:计算机与信息技术学院
专
业
:
计算机科学与技术(师
范)
课程名称:数据结构
实验题目:顺序栈的基本操作
班级序号:师范1班
学号:201421012731
学生姓名:邓雪
指导教师:杨红颖
完成时间:2015年12月25号
一、实验目的:
1 •熟悉掌握栈的定义、结构及性质;
2. 能够实现创建一个顺序栈,熟练实现入栈、出栈等栈的基本操作;
3•了解和掌握栈的应用。
二、实验环境:
Microsoft Visual C++ 6.0
三、实验内容及要求:
栈是一种特殊的线性表,逻辑结构和线性表相同,只是其运算规则有更多的限制,故又称为受限的线性表。
建立顺序栈,实现如下功能:
1. 建立一个顺序栈
2. 输出栈
3. 进栈
4. 退栈
5. 取栈顶元素
6. 清空栈
7. 判断栈是否为空
进行栈的基本操作时要注意栈”后进先出”的特性。
四、概要设计:
1、通过循环,由键盘输入一串数据。创建并初始化一个顺序栈。
2、编写实现相关功能函数,完成子函数模块如下。
3、调用子函数,实现菜单调用功能,完成顺序表的相关操作
五、代码:
#include
//定义结构体typedef struct {
datatype data[maxsize]; int top;
}seqstack;
//建立顺序栈seqstack *SET(seqstack *s) {
int i; s=(seqstack*)malloc(sizeof(seqstack)); s->top=-1;
printf(" 请输入顺序栈元素(整型,以scanf("%d",&i);
do{ s->top++; s->data[s->top]=i; scanf("%d",&i);
0 结束):");
}while(i!=0); printf(" 顺序栈建立成功\n");
return s;
}
//清空栈void SETNULL(seqstack *s) {
s->top=-1;}
//判断栈空
int EMPTY(seqstack *s)
{
if(s->top>=0)
return 0;
else return 1;}
//进栈
seqstack *PUSH(seqstack *s)
{
int x;
printf(" 你想要插入的数字:"); scanf("%d",&x);
if(s->top==maxsize-1)
{
printf("overflow");
return NULL;
}
else
{
s->top++; s->data[s->top]=x;
}
return s;
}
//退栈
seqstack *POP(seqstack *s)
{
if(s->top<0)
{
printf("underlow");
return s;
}
else
{
s->top--;
printf(" 删除的栈顶元素是:");
printf("%d\n",(s->data[s->top+1]));
}
return s;
}
//取栈顶
void TOP(seqstack *s)
{
if(s->top<0)
{
printf("stack is empty");
}
else
{
printf(" 当前的栈顶元素是:"); printf("%d\n",(s->data[s->top]));
}
}
//输出栈
void print(seqstack *s)
{
int i;
if(s->top<0)
{
printf(" 清空栈成功!");
}
for(i=s->top;i>=0;i--) printf("%d ",s->data[i]);
}
//主函数
int main()
{
seqstack *s; int i,j;
printf("\n\n\t\t\t\t 欢迎使用\n");
printf("\t\t __________________________________________ \n");
printf("\t\t\t1. 建立一个顺序栈\n");
printf("\t\t\t2. 输出栈\n");
printf("\t\t\t3. 进栈\n");
printf("\t\t\t4. 退栈\n");
printf("\t\t\t5. 取栈顶元素\n");
printf("\t\t\t6. 清空栈\n");
printf("\t\t\t7. 判断栈是否为空\n"); printf("\t\t\t8. 结束程序\n");
printf("\t\t __________________________________________ \n");
do
{
printf("\n\n 请选择想要实现的功能:"); scanf("%d",&i);
switch(i)
{
case 1:s=SET(s); break;
case 2:print(s); printf("\n");break;
case 3:s=PUSH(s); print(s); printf("\n");break;
case 4:s=POP(s); print(s); printf("\n"); break;
case 5:TOP(s); break;
case 6:SETNULL(s); print(s); printf("\n"); break;
case 7:j=EMPTY(s);
if(j==1)