1、基于数组的栈基本操作 实验要求 1. 实验目的 1.熟悉并能实现栈的定义和基本操作。 2.了解和掌握栈在递归和非递归算法的应用。 2. 实验要求 1. 进行栈的基本操作时要注意栈“后进先出”的特性。 2. 编写完整程序完成下面的实验内容并上机运行。 3. 整理并上交实验报告。 3. 实验内容 1. 编写程序任意输入栈长度和栈中的元素值,构造一个顺序栈,对其进行入栈、出栈以及取栈顶元素操作。写个功能写成一个函数。 2. 从键盘上输入一串带括号的字符,如果其中的括号是匹配的,则输出“balance”,如果括号不匹配,则输出“not balance” 实验代码实现 结构
2、体声明 typedef struct{ int data[MAXSIZE]; int top; }seqStack; 操作函数声明 // 初始化栈 seqStack stackInit(); // 将数据push进栈 void stackPush(seqStack *s,int data); // pop出栈顶元素 int stackPop(seqStack *s); // 获取栈顶元素 int getStackTop(seqStack *s); // 判断栈是否为空,为空返回1,反之为0 int isEmpty(seqStack *s); //
3、 判断栈是否已经满了,满栈返回1,反之返回0 int checkStack(seqStack *s); // 展示栈中的元素 void showStack(seqStack *s); · 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9 · 10 · 11 · 12 · 13 · 14 主函数实现 int main(int argc, char *argv[]){ seqStack s; s = stackInit(); stackPush(&s,10); stackPush(&s,20
4、);
stackPush(&s,30);
stackPush(&s,40);
stackPush(&s,50);
showStack(&s);
stackPop(&s);
stackPop(&s);
showStack(&s);
int topData = getStackTop(&s);
printf("栈顶元素为:%d\n",topData);
return 0;
}
源代码参考
#include
5、 struct{ int data[MAXSIZE]; int top; }seqStack; // 初始化栈 seqStack stackInit(); // 将数据push进栈 void stackPush(seqStack *s,int data); // pop出栈顶元素 int stackPop(seqStack *s); // 获取栈顶元素 int getStackTop(seqStack *s); // 判断栈是否为空,为空返回1,反之为0 int isEmpty(seqStack *s); // 判断栈是否已经满了,满栈返回1,反之返
6、回0 int checkStack(seqStack *s); // 展示栈中的元素 void showStack(seqStack *s); int main(int argc, char *argv[]){ seqStack s; s = stackInit(); stackPush(&s,10); stackPush(&s,20); stackPush(&s,30); stackPush(&s,40); stackPush(&s,50); showStack(&s); stack
7、Pop(&s); stackPop(&s); showStack(&s); int topData = getStackTop(&s); printf("栈顶元素为:%d\n",topData); return 0; } int getStackTop(seqStack *s){ return s->data[s->top]; } void showStack(seqStack *s){ if(isEmpty(s) == 0){ int length = s->top;
8、 int i; printf("栈元素为:\t"); for (i = 0;i<=length ;i++ ){ printf("%d\t",s->data[i]); } printf("\n"); }else{ return; } } void stackPush(seqStack *s,int data){ if(checkStack(s) == 1){ s->top ++; s->data[s->top
9、] = data; printf("PUSH数据\t%d\t成功\n",data); }else{ return; } } int stackPop(seqStack *s){ int result; if(isEmpty(s) == 0){ result = s->data[s->top]; s->data[s->top] = 0; s->top --; printf("栈POP数据\t%d\t成功\n",result);
10、 return result; }else{ return 0; } } int checkStack(seqStack *s){ if(s->top == MAXSIZE - 1){ printf("栈已经满了\n"); return 0; } return 1; } seqStack stackInit(){ seqStack s; s.top = -1; int length; printf("请输入所需栈的长度:");
11、
scanf("%d",&length);
int i,temp;
for (i = 0;i






