数据结构实验——基于数组的栈基本操作
来源:互联网 发布:广东话seo是什么意思 编辑:程序博客网 时间:2024/06/10 05:42
实验要求
实验目的
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,反之为0int isEmpty(seqStack *s);// 判断栈是否已经满了,满栈返回1,反之返回0int 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;}
源代码参考
#include <stdio.h>#define MAXSIZE 10typedef 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,反之为0int isEmpty(seqStack *s);// 判断栈是否已经满了,满栈返回1,反之返回0int 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;}
运行结果显示
0 0
- 数据结构实验——基于数组的栈基本操作
- 数据结构实验——基于数组表的实验
- 【基本数据结构】C语言基于数组的栈操作
- 数据结构实验十一——树的基本操作
- 数据结构实验2——二叉树的基本操作
- 数据结构实验之栈八:栈的基本操作 SDUT
- 数据结构实验之栈八:栈的基本操作
- 数据结构实验之栈八:栈的基本操作
- 数据结构实验之栈八:栈的基本操作
- 数据结构实验之栈八:栈的基本操作
- 数据结构实验之栈八:栈的基本操作
- 数据结构实验之栈八:栈的基本操作
- 数据结构实验之栈八:栈的基本操作
- 数据结构实验之栈八:栈的基本操作
- 数据结构实验之栈八:栈的基本操作
- 数据结构实验之栈八:栈的基本操作
- 数据结构实验之栈八:栈的基本操作
- 数据结构实验之栈八:栈的基本操作
- linux下用户的增删
- hiho最小生成树一(prim)算法
- JS开发规范
- JQuery之动态绑定事件
- 让Xcode8.0支持iOS10.3设备真机测试(不断更新真机支持包)
- 数据结构实验——基于数组的栈基本操作
- Redis源码剖析和注释(十四)---- Redis 数据库及相关命令实现(db)
- cvc-complex-type.2.3: 元素 'beans' 必须不含字符 [子级], 因为该类型的内容类型为“仅元素”
- UILocalNotification 本地通知无法删除的坑
- 按之字形顺序打印二叉树
- MFC在指定目录下创建txt文件
- Linphone-服务器搭建(一)
- How to Get Even with Your Annoying Neighbor by Bumping Them Off Their WiFi Network —Undetected
- 强化学习系列<2>、Q-Learning