南昌大学数据结构实验程序 联系客服

发布时间 : 星期日 文章南昌大学数据结构实验程序更新完毕开始阅读6ac0e95e844769eae009ed63

实验三 基于数组的栈基本操作实验

一 、实验目的

1.熟悉并能实现栈的定义和基本操作。

2.了解和掌握栈在递归和非递归算法的应用。

二 、实验要求

1.进行栈的基本操作时要注意栈“后进先出”的特性。 2.编写完整程序完成下面的实验内容并上机运行。 3.整理并上交实验报告。

三、实验内容

1.编写程序任意输入栈长度和栈中的元素值,构造一个顺序栈,对其进行入栈、出栈以及取栈顶元素操作。写个功能写成一个函数。 #include #include #define MAXSIZE 20 typedef struct

{ 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 #include #define MAXSIZE 200 typedef struct

{ 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(\