收藏 分销(赏)

基于数组的栈实验.docx

上传人:仙人****88 文档编号:11978824 上传时间:2025-08-25 格式:DOCX 页数:9 大小:50.65KB 下载积分:10 金币
下载 相关 举报
基于数组的栈实验.docx_第1页
第1页 / 共9页
基于数组的栈实验.docx_第2页
第2页 / 共9页


点击查看更多>>
资源描述
基于数组的栈基本操作 实验要求 1. 实验目的  1.熟悉并能实现栈的定义和基本操作。  2.了解和掌握栈在递归和非递归算法的应用。 2. 实验要求 1. 进行栈的基本操作时要注意栈“后进先出”的特性。 2. 编写完整程序完成下面的实验内容并上机运行。 3. 整理并上交实验报告。 3. 实验内容 1. 编写程序任意输入栈长度和栈中的元素值,构造一个顺序栈,对其进行入栈、出栈以及取栈顶元素操作。写个功能写成一个函数。 2. 从键盘上输入一串带括号的字符,如果其中的括号是匹配的,则输出“balance”,如果括号不匹配,则输出“not balance” 实验代码实现 结构体声明 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); // 判断栈是否已经满了,满栈返回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); 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 <stdio.h> #define MAXSIZE 10 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); // 判断栈是否已经满了,满栈返回1,反之返回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); stackPop(&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; 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] = 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); 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("请输入所需栈的长度:"); scanf("%d",&length); int i,temp; for (i = 0;i<length ;i++ ) { printf("请输入第%d个数据:",i+1); scanf("%d",&temp); stackPush(&s,temp); } return s; } int isEmpty(seqStack *s){ if(s->top == -1){ printf("栈为空\n"); return 1; } return 0; } 运行结果显示
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服