当前位置:文档之家› 实验三 实现顺序栈的插入和删除算法

实验三 实现顺序栈的插入和删除算法

实验三顺序栈的插入和删除算法
一.实验目的:
掌握栈在顺序存储结构上的插入和删除运算。

二.实验要求:
1. 给出程序设计的基本思想、原理和算法描述。

2. 画出程序流程图;根据数据结构有关知识编出算法程序;
3. 源程序给出注释。

4. 保存和打印出程序的运行结果,并结合程序进行分析。

三.实验内容:
1.编写函数实现顺序栈中的插入(入栈);
2.编写函数实现顺序栈中的删除(出栈);
3.编写程序实现以下功能:
(1) 创建一个顺序栈:22,33,45,99,8;
(2) 调用插入函数,令元素58入栈;
(3) 调用删除函数,删除栈顶的三个元素;
(4) 输出最终顺序栈中的元素。

算法分析:
进栈,判断栈是否已满,若栈满,则进行溢出处理,若栈未满,将栈顶指针加一,将新元素送入到栈顶指针所指的位置。

出栈,判断栈是否为空,若栈空,进行下溢处理,若栈不空,将栈顶元素赋给变量,将栈顶指针退一。

流程图:
源程序:
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 50/*定义数组长度*/
int stack[MAXSIZE];/*栈元素的数据类型*/ int top;
void push(int x)
{if(top==MAXSIZE-1)
{printf("栈满溢出\n");
exit(1);
}
else{top++;
stack[top]=x;
}
}
int pop()
{int x;
if(top==-1)
{printf("栈空溢出\n");
exit(1);
}
else
{x=stack[top];
top--;
}
return x;
}
main()
{ int i;top=0;
printf("请输入顺序栈\n");
for(i=1;i<=5;i++)
{scanf("%d",&stack[i]);
top++;
}
push(58);
for(i=1;i<=top;i++)
printf("%3d",stack[i]);/*输出删除后的数组*/
printf("\n");
for(i=1;i<=3;i++)
pop();
for(i=1;i<=top;i++)
printf("%3d",stack[i]);
printf("\n");
}
实验小结:通过本次实验让我对栈的算法有了进一步了解,让我受益良多。

相关主题