C语言 实现 顺序栈
来源:互联网 发布:matlab画矩阵灰度图 编辑:程序博客网 时间:2024/05/16 18:21
SeqStack.h 头文件声明如下:
#include <stdio.h>typedef int DataType; //自定义数据类型,假定为整型typedef struct SeqStack //顺序栈定义{ int MAXNUM; //栈存储容量标识 int top; //栈顶位置 DataType *data; //栈存储的元素的指针,可看作一个数组名}SeqStack;typedef struct SeqStack * PSeqStack; //顺序栈的指针类型//创建一个容量为m的空栈PSeqStack createEmptyStack(int m);//判断栈是否为空栈int isEmptyStack(PSeqStack stack);//判断栈是否已满int isFullStack(PSeqStack stack);//进栈,成功返回1,失败返回0int push(PSeqStack stack,DataType x);//出栈,成功返回1,失败返回0int pop(PSeqStack stack);//取栈顶元素DataType getTop(PSeqStack stack);//显示栈内所有元素 void showStack(PSeqStack stack);//把栈置空void setEmpty(PSeqStack stack);//把栈销毁void destroyStack(PSeqStack stack);
SeqStack.cpp 定义代码如下:
#include <stdio.h>#include <malloc.h>#include "SeqStack.h"//创建一个容量为m的空栈PSeqStack createEmptyStack(int m){ PSeqStack stack=(PSeqStack)malloc(sizeof(struct SeqStack)); if(stack == NULL) { printf("存储分配失败,请重建栈!\n"); return NULL; } //初始并分配栈元素存储空间,数组第一个元素不使用 stack->data = (DataType *)malloc( (m+1) * sizeof(DataType)); if(stack->data == NULL) { printf("存储分配失败,请重建栈!\n"); return NULL; } stack->MAXNUM = m; //栈容量 stack->top = 0; //栈内还未存储有元素 return stack; }//判断栈是否为空栈int isEmptyStack(PSeqStack stack){ return (stack->top == 0);}//判断栈是否已满int isFullStack(PSeqStack stack){ return (stack->top == stack->MAXNUM);}//进栈,成功返回1,失败返回0int push(PSeqStack stack,DataType x){ if(isFullStack(stack)) { printf("栈溢出!\n"); return 0; } stack->top =stack->top + 1; stack->data[stack->top]=x; //存储栈元素数组从下标1开始 return 1;}//出栈,成功返回1,失败返回0int pop(PSeqStack stack){ if(isEmptyStack(stack)) { printf("栈为空!\n"); return 0; } stack->top=stack->top-1; return 1;}//取栈顶元素DataType getTop(PSeqStack stack){ if(isEmptyStack(stack)) { printf("栈为空!取栈顶元素失败!\n"); return NULL; } return (stack->data[stack->top]);}//显示栈内所有元素 void showStack(PSeqStack stack){ if(isEmptyStack(stack)) printf("当前栈为空!无内容。\n"); else { int i; printf("顶--> "); for(i=stack->top; i>0; i--) { printf("%d ",stack->data[i]); } printf("-->底\n"); }}//把栈置空void setEmpty(PSeqStack stack){ stack->top=0;}//把栈销毁void destroyStack(PSeqStack stack){ if(stack) { free(stack->data); stack->top=0; free(stack); }}
main.cpp main函数调用顺序栈操作:
#define _CRT_SECURE_NO_DEPRECATE //解决在VS环境里出现的警告问题#include <stdio.h>#include "SeqStack.h"int main( ){ char input; int m; DataType data; PSeqStack stack; do { printf("---------------------------------------------\n"); printf("---------------------------------------------\n"); printf("---- 输入对应字符执行以下操作 ----\n"); printf("---- ----\n"); printf("---- \"0\":创建一个空栈 ----\n"); printf("---- \"1\":检查栈是否为空 ----\n"); printf("---- \"2\":检查栈是否已满 ----\n"); printf("---- \"3\":执行入栈操作 ----\n"); printf("---- \"4\":执行出栈操作 ----\n"); printf("---- \"5\":打印栈顶元素 ----\n"); printf("---- \"6\":打印栈内所有元素 ----\n"); printf("---- \"7\":把栈清空 ----\n"); printf("---- \"8\":把栈销毁 ----\n"); printf("---- \"q\":退出程序 ----\n"); printf("---------------------------------------------\n"); printf("---------------------------------------------\n"); printf("选择操作:"); scanf("%c",&input); switch(input) { case '0': printf("请输入要创建的栈的容量大小:"); scanf("%d",&m); stack=createEmptyStack(m); printf("成功创建一个容量为%d的栈。\n",m); break; case '1': if(isEmptyStack(stack)) printf("该栈当前为空栈!\n"); else printf("该栈当前不为空栈!\n"); break; case '2': if(isFullStack(stack)) printf("该栈存储已满!\n"); else printf("该栈存储未满!\n"); break; case '3': fflush(stdin); printf("请输入要入栈的值:"); scanf("%d",&data); if( push(stack,data)) { printf("入栈成功,栈当前内容:"); showStack(stack); } else { printf("入栈失败,请检查!\n"); } break; case '4': if( pop(stack)) { printf("出栈成功,栈当前内容:"); showStack(stack); } else { printf("出栈失败,请检查!\n"); } break; case '5': data=getTop(stack); printf("栈顶值为:%d\n",data); break; case '6': printf("栈当前内容:"); showStack(stack); break; case '7': setEmpty(stack); printf("栈当前内容:"); showStack(stack); break; case '8': destroyStack(stack); printf("成功将栈销毁!\n"); break; default: break; } printf("\n"); fflush(stdin); /*清空缓冲区,也可以使用rewind(stdin);*/ }while( input != 'q' ); return 0;}
好!大功告成!!!
- 顺序栈 C语言实现
- C语言实现顺序栈
- c语言实现顺序栈
- C语言 实现 顺序栈
- 顺序栈C语言实现
- C语言实现顺序栈
- 顺序栈的C语言实现
- C语言实现数据结构中的顺序栈
- 顺序栈的实现(C语言)
- 顺序栈的C语言实现
- 顺序栈的实现C语言
- 顺序栈的实现(C语言)
- 顺序栈的C语言实现
- 数据结构C语言实现之顺序栈
- C语言实现简单顺序栈
- <数据结构>顺序栈的C语言实现
- 数据结构--顺序栈实现(c语言)
- 顺序栈的C语言实现
- 获取SIM/UIM卡的联系人容量及已用容量信息
- 开源搜索引擎
- 明天测试下最新clang complete,希望已经搞好了!
- 第九周任务三
- 第九周任务(五)
- C语言 实现 顺序栈
- android TextView的常用属性介绍
- HTTP请求头概述
- 将顺序的数据颠倒,复杂度为n和二分之n的算法
- [wp7软件]wp7~~HTC官方软件~~集合贴~~
- FLEX嵌入JSP中
- undefined reference to `__aeabi_unwind_cpp_pr0' 问题解决办法
- Dojo 扩展 javascript 核心库 - 组合, 结构化与复制对象
- 第9周任务5