首页 > 代码库 > 栈初始化,入栈,出栈功能的实现
栈初始化,入栈,出栈功能的实现
1 ////////////////////////////////////////////////////////// 2 // stack.cpp 3 // 4 // author:Leetao 5 ////////////////////////////////////////////////////////// 6 // 简介: 7 // 线性表的实现 8 ////////////////////////////////////////////////////////// 9 /** 10 * 栈初始化,入栈,出栈功能的实现 11 * 12 * @author Leetao 13 * @version 1.0 14 * @date 2014.11.22 15 */ 16 #include<stdio.h> 17 #include<malloc.h> 18 19 #define STACK_INIT_SIZE 100 //储存空间初试分配量 20 #define STACKINCREMENT 10 //储存空间分配增量 21 22 //类型宏定义,此处定义为int型 23 typedef int SElem; 24 typedef int Status; 25 26 typedef struct 27 { 28 SElem *base; //在栈构造之前和销毁之后,base的值为NULL 29 SElem *top; //栈顶指针 30 int stacksize; 31 }SqStack; 32 33 //函数声明 34 Status InitStack(SqStack &S); 35 Status GetTop(SqStack &S,SElem &e); 36 Status Push(SqStack &S,SElem e); 37 Status Pop(SqStack &S,SElem &e); 38 39 //栈初始化 40 Status InitStack(SqStack &S) 41 { 42 S.base=(SElem *)malloc(STACK_INIT_SIZE*sizeof(SElem)); 43 if(S.base==NULL) 44 { 45 printf("error!\n"); 46 return 0; 47 } 48 S.top=S.base; 49 S.stacksize=STACK_INIT_SIZE; 50 51 return 0; 52 } 53 54 //返回栈顶元素 55 Status GetTop(SqStack &S,SElem &e) 56 { 57 if(S.base==S.top) 58 { 59 printf("the stack is null!\n"); 60 return 0; 61 } 62 63 e=*(S.top-1); 64 65 return 0; 66 } 67 68 //插入元素 69 Status Push(SqStack &S,SElem e) 70 { 71 if(S.top-S.base>=S.stacksize) //栈满,追加储存空间 72 { 73 S.base=(SElem *)realloc(S.base, 74 (S.stacksize+STACKINCREMENT)*sizeof(SElem)); 75 76 if(S.base==NULL) 77 { 78 printf("error!\n"); 79 return 0; 80 } 81 82 S.top=S.base+S.stacksize; 83 S.stacksize+=STACKINCREMENT; 84 } 85 *S.top++=e; 86 87 88 return 0; 89 } 90 91 //删除栈顶元素 92 Status Pop(SqStack &S,SElem &e) 93 { 94 if(S.top==S.base) 95 { 96 printf("error!\n"); 97 return 0; 98 } 99 e=*(--S.top);100 101 return 0;102 } 103 104 int main() 105 {106 SqStack S;107 int n,e;108 InitStack(S);109 printf("输入一个非负的十进制数,打印与其等值的八进制数:\n");110 scanf("%d",&n);111 112 while(n)113 {114 Push(S,n%8);115 n=n/8;116 }117 118 printf("最后转换结果为:\n");119 while(S.top!=S.base)120 {121 Pop(S,e);122 printf("%d",e);123 }124 125 126 return 0;127 128 }
栈初始化,入栈,出栈
栈初始化,入栈,出栈功能的实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。