资源描述
实验四 顺序栈的插入和删除
实验四 顺序栈的插入和删除
姓名: 学号: 日期:
一、实验目的:
1.熟悉栈的基本结构、特点
2.熟悉顺序栈的插入和删除的基本算法和实现
二、实验条件:
1.硬件:一台微机
2.软件:Windows操作系统和C语言系统(MS VC++6.0)
三、实验方法:
确定存储结构后,上机调试实现顺序栈的插入和删除运算。
四、实验要求:
1、编写函数实现顺序栈中的删除功能
2、 编写函数实现顺序栈中的插入功能
2.编写程序实现以下功能
(1) 创建一个顺序栈:12,15,87,96,3;
(2) 调用删除函数,分别令栈中的前三个元素出栈;
(3) 调用插入函数,使元素6入栈;
(4) 输出最终顺序栈中的元素。
五、 算法流程图:
六、实验算法:
#include <stdio.h>
#define MAXSIZE 100 /*栈中最多100个元素*/
int stack[MAXSIZE];
int top=-1;
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 n,x=1,i;
printf("\n请输入进栈初始化元素:(0为结束符)\n");
while(x)
{
scanf("%d",&x);
push(x);
}
top--;
printf("\n请输入出栈个数:\n");
scanf("%d",&n);
printf("\n出栈元素依次为:\n");
for(;n;n--)
{
printf("%d ",pop());
}
printf("\n请输入进栈元素:\n");
scanf("%d",&x);
push(x);
printf("栈内元素有:\n");
for(i=0;i<=top;i++)
{
printf("%d ",stack[i]);
}
printf("\n");
}
七、算法介绍:
1. 算法功能:输入一个顺序栈,按要求出栈,并进栈,然后再将链表输出
2. 算法利用宏定义MAXSIZE,提高算法兼容性
八、效果图:
第 3 页 共 3 页
展开阅读全文