赞
踩
1、掌握栈的特点(先进后出 FILO)及基本操作,如入栈、出栈等。
2、利用栈的特点解决实际问题,提高编程能力。
编程实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能:
1、初始化顺序栈;
2、给定一个元素,将此元素压入此栈中;
3、将栈顶一个元素弹出此栈。
#include<stdio.h>
#include<stdlib.h>
typedef int elemtype;
#define maxsize 3//定义栈中元素的最大个数
typedef struct
{
elemtype* elem; //元素
int top; //栈顶指针
int size;
}sqstack;
int initstack(sqstack& s)//初始化顺序栈
{
s.elem = (elemtype*)malloc(maxsize * sizeof(elemtype*));//给每个数据元素分配连续的存储空间
s.top = 0;
s.size = maxsize;
return 1;
}
int push(sqstack& s, elemtype& e)//压栈
{
if (s.top==maxsize) //判断栈满
{
printf("栈满,不能入栈\n");
return 0;
}
s.elem[s.top] = e; //新元素入栈
s.top++;//指针+1
return 1;
}
int pop(sqstack& s, elemtype& e)//弹栈
{
if (s.top==0) //判断栈空
{
printf("栈空,无元素出栈\n");
return 0;
}
s.top--;//栈顶元素-1
e = s.elem[s.top]; //栈顶元素出栈
return 1;
}
void output(sqstack& s)//输出
{
elemtype e;
while (s.top!=0) //栈顶不为空
{
s.top--;
e = s.elem[s.top];
printf("%d\t", e);
}
printf("\n");
}
void main()
{
sqstack s;
elemtype e;
initstack(s);
int t;
do
{
printf("\n主菜单\n");
printf("1 插入一个元素");
printf("2 删除栈顶元素");
printf("3 输出栈元素");
printf("4 结束程序运行");
printf("\n--------------------------------\n");
printf("请输入你的选择(1,2,3,4):");
scanf_s("%d", &t);
switch (t)
{
case 1:scanf_s("%d", &e); push(s, e); break;
case 2:pop(s, e); break;
case 3:output(s); break;
case 4:exit(0);
}
} while (t <= 4);
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。