数据结构:数组栈
来源:互联网 发布:淘宝怎么取消延长收货 编辑:程序博客网 时间:2024/06/07 12:02
这几天博客拖了几天,不是因为偷懒。实在是太忙了,又是数据结构整理,又是项目的联习。
不多说,我把栈和队列的几种形式整理实现了一下。还是看代码吧。
强调一下,主函数的验证我就不发了,我写的报错函数也只在这一篇里面留,后面都是一样的,就不发了。
若有错误,我以后修改。
先是头文件
#ifndef __SQSTACK_H__#define __SQSTACK_H__#define FALSE 0#define TRUE 1#define SIZE 10typedef int stack_data;typedef struct _stack{stack_data data[SIZE];int top;}STACK;//清空栈int Init_stack(STACK * s);//判断是否空栈int Stack_Empty (STACK * s);//判断是满空栈int Stack_Full (STACK * s);//入栈int Push(STACK * s,stack_data x);//压栈int Pop(STACK * s,stack_data *x);//取栈顶元素int getStack(STACK * s,stack_data *x);再是实现函数
#include<stdio.h>#include"SqStack.h"#include"error.h"//清空栈int Init_stack(STACK * s){if ( s== NULL ){errno = ERROR;return FALSE;}s->top = -1;return TRUE;}//判断是否空栈int Stack_Empty (STACK * s){if ( s== NULL ){errno = ERROR;return FALSE;}//或者可以写成return s->top == -1 相等返回1,不相等返回0if (s->top == -1)return TRUE;else return FALSE;}//判断是否满栈int Stack_Full (STACK * s){if ( s== NULL ){errno = ERROR;return FALSE;}return s->top == SIZE-1;}//入栈int Push(STACK * s,stack_data x){if ( s== NULL ){errno = ERROR;return FALSE;}if (Stack_Full(s) == TRUE){errno = FULL;return FALSE;}s->data[++s->top] = x;return TRUE;}//出栈int Pop(STACK * s,stack_data *x){if ( s== NULL ){errno = ERROR;return FALSE;}if (Stack_Empty(s) == TRUE){errno = EMPTY;return FALSE;}*x = s->data[s->top--];return TRUE;}//取栈顶元素int getStack(STACK * s,stack_data *x){if ( s== NULL ){errno = ERROR;return FALSE;}if (Stack_Empty(s) == TRUE){errno = EMPTY;return FALSE;}*x = s->data[s->top];}
最后是报错函数和头文件
#ifndef __ERROR_H__#define __ERROR_H__#define ERROR -1#define FULL -2#define EMPTY -3#define MALLOC_ERROR -4#define QUEUE_FULL -5#define QUEUE_EMPTY -6int errno ;//向屏幕输出错误原因void myerror (char *str);//向字符串传送错误原因char * myStrError (int num);#endif
#include<stdio.h>#include"error.h"void myerror (char *str){char *msg = myStrError (errno);printf("%s: %s\n",str,msg);}char * myStrError (int num){switch (errno){case ERROR:return "%输入参数错误。";case FULL:return "满栈。";case EMPTY:return "空栈。";case MALLOC_ERROR:return "动态内存分配失败。";case QUEUE_FULL:return "队列已满。";case QUEUE_EMPTY:return "队列已空。";}}
阅读全文
0 0
- 数据结构栈,基于数组
- 数据结构-----栈数组实现
- 数据结构 栈(动态数组)
- 数据结构---栈(数组实现)
- 数据结构:数组栈
- 数据结构-用数组实现栈
- 数据结构----栈(静态数组)
- 【数据结构】栈-数组的实现
- [数据结构] 栈的数组实现
- 数组实现栈的数据结构
- 【数据结构】栈的数组实现
- 简单数据结构---数组实现栈
- 【JAVA数据结构】栈(数组实现)
- 【数据结构】栈的数组实现
- 数据结构-用数组模拟栈
- 数据结构---数组
- 数据结构数组
- 数据结构---->数组
- 应用一个基于Python的开源人脸识别库,face_recognition
- 如何将普通Java工程转成Maven工程
- opencv videocapture无法读取视频
- QT实现键盘钩子
- HTML入门笔记22-HTML内嵌音频文件
- 数据结构:数组栈
- Showing Events on a Chart (MT5 中显示数据日历)
- MySQL性能优化的最佳20+条经验
- Linux学习-grep与正则表达式使用方法
- uikit——Auto Layout——UIView——margin
- [转]在windows7系统下安装MySQL5.7.19免安装版
- 代理模式
- 求二叉树中两个节点的最近公共祖先
- PDF Expert for Mac 最新破解版 激活版 官网正式版