发布时间 : 星期日 文章南昌大学数据结构实验程序更新完毕开始阅读6ac0e95e844769eae009ed63
实验三 基于数组的栈基本操作实验
一 、实验目的
1.熟悉并能实现栈的定义和基本操作。
2.了解和掌握栈在递归和非递归算法的应用。
二 、实验要求
1.进行栈的基本操作时要注意栈“后进先出”的特性。 2.编写完整程序完成下面的实验内容并上机运行。 3.整理并上交实验报告。
三、实验内容
1.编写程序任意输入栈长度和栈中的元素值,构造一个顺序栈,对其进行入栈、出栈以及取栈顶元素操作。写个功能写成一个函数。 #include
{ int data[MAXSIZE]; int top; }seqstack;
/*初始化栈*/
seqstack stainit() {seqstack s; s.top=-1; return s;}
/*进栈*/
seqstack stackpush(seqstack s,int x) {
if(s.top==MAXSIZE-1) { printf(\exit(0);} s.top++;
s.data[s.top]=x; return s; }
/*出栈*/
int stackpop(seqstack *st) {int x;
if(st->top==-1) /*判断栈是否为空*/ {printf(\x=st->data[st->top]; st->top--; return x; }
/*Get the top element*/ int top(seqstack s) {if(s.top!=-1)
return(s.data[s.top]); }
/*主函数*/ void main() {
seqstack s,*st; st=&s;
int i,a[6],m;
printf(\请输入依次入栈的6个元素:\\n\for(i=0;i<6;i++) scanf(\
s=stainit(); for(i=0;i<6;i++) s=stackpush(s,a[i]);
printf(\得到的栈顶元素:\\n\for(i=s.top;i>=0;i--) {m=stackpop(st); printf(\} }
2.从键盘上输入一串带括号的字符,如果其中的括号是匹配的,则输出“balance”,如果括号不匹配,则输出“not balance”
#include
{ char data[MAXSIZE]; int top; }seqstack;
/*初始化栈*/ seqstack stainit() {seqstack s; s.top=-1; return s;}
/*进栈*/
seqstack stackpush(seqstack s,char x) {
if(s.top==MAXSIZE-1) { printf(\
exit(0);} s.top++;
s.data[s.top]=x; return s; }
/*出栈*/
int stackpop(seqstack *st) {char x;
if(st->top==-1) /*判断栈是否为空*/ {printf(\x=st->data[st->top]; st->top--; return x; }
/*主函数*/ void main() { char c[MAXSIZE],t,m,*p; int k=0; seqstack s,*st; st=&s; s=stainit();
printf(\请输入字符串:\\n\gets(c); p=c;
for(;*p!='\\0';p++) { if(*p!=')'&&*p!=']') if(*p=='('&&*p=='[')
{t=*p; s=stackpush(s,*p);} else
continue;
if(s.top>=0)
{if(*p==')'||*p==']') {m=stackpop(st);
if((m=='('&&*p==')')||(m=='['&&*p==']')) continue; else
{printf(\