数据结构之栈
来源:互联网 发布:西安爱知 编辑:程序博客网 时间:2024/06/06 03:04
#include<stdio.h>#define STACKSIZE 10#define DataType intstruct stack_1{ DataType items[5]; int top;};typedef struct stack_1 SqStack ;int InitStack(SqStack *s);//建立(初始化)栈int Push_Stack(SqStack *s,DataType *a);//入栈int Out_Stack(SqStack *s,DataType *a );//出栈int Visit_Stack(SqStack *s);//遍历栈int Get_Stack(SqStack *s,DataType *a );//取栈顶int Search_n_Stack(int n,SqStack *s);//取栈中第n个元素int main(void){SqStack zhan1,*s;int i;char a = 'a',b = 'w',q;s = &zhan1;InitStack(&zhan1); if(!Visit_Stack(&zhan1)) printf("栈空。\n"); if(!Get_Stack(&zhan1,&q )) printf("栈已空!\n\a"); else printf("\n栈顶元素为 %c \n",q);for(i=0;i<5;i++,a++)//////////////////////////////////////什么问题?{ if(!Push_Stack(&zhan1,&a)) printf("栈已满!\n\a"); else printf("%c->%d ",s->items[i],s->top);}if(!Get_Stack(&zhan1,&q )) printf("栈已空!\n\a"); else printf("\n栈顶元素为 %c \n",q);for(i=0;i<3;i++){if(!Out_Stack(&zhan1,&q)) printf("栈已空!\n\a"); printf("\n出栈元素为 %c ",q);} if(!Get_Stack(&zhan1,&q )) printf("栈已空!\n\a"); else printf("\n栈顶元素为 %c \n",q); if(!Visit_Stack(&zhan1)) printf("栈空。"); getchar();return 0;}/***********************************************************//*Functionality function:初始化(建立空栈) *//*Function Parameters;s-指向栈的指针 *//*Function return value:建栈成功返回1 ;栈顶默认存储NULL *//***********************************************************/int InitStack(SqStack *s){ s->top = -1; return 1;}/*******************************************************************//*Functionality function:入栈 *//*Function Parameters:s-指向栈的指针 a-要入栈的元素指针 *//*Function return value:栈满返回0;入栈成功返回1,否则提示未知错误 *//*Remarks:入栈元素使用指针的目的是为了可以入栈字符串 *//* 因为函数实参不能是一个数组(升级函数用) *//*******************************************************************/int Push_Stack(SqStack *s,DataType *a){ if(s->top >= STACKSIZE-1) return 0; else { s->top++; s->items[s->top] = *a; return 1;}; printf("入栈未知错误!\a\n");}/********************************************************************//*Functionality function:出栈 *//*Function Parameters:s-指向栈的指针 a-存储出栈的元素 *//*Function return value:空栈返回0;出栈成功返回1,否则提示未知错误 *//********************************************************************/int Out_Stack(SqStack *s,DataType *a ){ if (s->top < 0) return 0; else { *a = s->items[s->top]; s->top--; return 1; }; printf("出栈未知错误!\a\n");}/**************************************************************//*Functionality function:遍历栈(本函数遍历结果打印在屏幕上)*//*Function Parameters:s-指向栈的指针 *//*Function return value:遍历完成返回1,空栈返回0 *//*Remarks:栈中元素从栈顶开始依次打印 *//**************************************************************/int Visit_Stack(SqStack *s){ int i; if (s->top<0) return 0; else {for(i=s->top;i>=0;i--) printf("%d ",s->items[i],s->top); return 1;} printf("未知错误!\a\n");}/*****************************************************//*Functionality function:取栈顶元素(非出栈) *//*Function parameters;s-指向栈的指针 a-返回栈顶元素 *//*Function return value:栈空返回0,取出返回1 *//*****************************************************/int Get_Stack(SqStack *s,DataType *a ){ if (s->top <= -1) return 0; else { *a = s->items[s->top]; return 1; }; printf("取栈顶元素未知错误!\a\n");}/*****************************************************//*Functionality function:取栈中第n个元素(非出栈) *//*Function parameters;s-指向栈的指针 n-返回栈顶元素 *//*Function return value:栈空返回0,取出返回1 *//*****************************************************/int Search_n_Stack(int n,SqStack *s){ if (s->top <= -1) ; else if(n>(s->top+1)) ; else return s->items[n-1]; printf("取栈顶元素未知错误!\a\n");}
0 0
- java数据结构之栈
- 数据结构之顺序栈
- 数据结构之链栈
- 数据结构之栈
- 数据结构复习之【栈】
- 数据结构之栈
- 数据结构之栈
- 数据结构之栈实现
- 数据结构学习之栈
- 数据结构之栈
- 数据结构之栈
- 复习数据结构之栈
- 数据结构之栈
- 数据结构之栈
- 大话数据结构之栈
- 数据结构之顺序栈
- 数据结构之链式栈
- 数据结构之顺序栈
- 数据结构之链表
- 标准的ActionRecord效验错误信息
- Python中模块和包的概念
- uva 10740 Not the Best (最短路 A*算法)
- 数组排序
- 数据结构之栈
- 1.OA系统概述
- Java中隔离容器的实现
- 使用活动条ActionBar---实现Tab以及下拉式导航---导航方便你我他
- 指针与数组
- vs2013 c++ ATL 制作COM组件
- 对数组名取地址得到的是什么?
- 面试题 8
- C#中is和as、向上强制转换和向下强制装换之详解