Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4461951
  • 博文数量: 1148
  • 博客积分: 25453
  • 博客等级: 上将
  • 技术积分: 11949
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-06 21:14
文章分类

全部博文(1148)

文章存档

2012年(15)

2011年(1078)

2010年(58)

分类: C/C++

2011-05-11 10:33:16

代码附件: stack.rar  


1.stack.h 头文件
  1. #ifndef _STACK_H
  2. #define _STACK_H

  3. #define STACK_INIT_SIZE 10 //初始化 可以存放 10 个ElemType 的数据
  4.                    //base=(ElemType *)malloc(sizeof(ElemType)*STACK_INIT_SIZE);
  5. typedef char ElemType;
  6.  
  7. typedef struct _stack
  8. {
  9.     ElemType *base; // 数据存储 首地址
  10.     //ElemType *top; //栈顶 指针
  11.     int top; //top=-1 ,表示空栈,top=size-1 表示栈满
  12. }STACK;

  13. STACK *init_stack();
  14. int push(STACK *s,ElemType *e);
  15. int pop(STACK *s,ElemType *e);
  16. int get_top(STACK *s,ElemType *e);
  17. int stack_empty(STACK *s);

  18. #endif
stack.c
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "stack.h"

  4. STACK *init_stack()
  5. {
  6.     STACK *s=(STACK *)malloc(sizeof(STACK)); /* *base *top 栈顶 栈底 申请空间*/
  7.     if(s==NULL)
  8.         exit(1);
  9.      /*申请栈数据 存放空间*/
  10.     s->base=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType));
  11.     s->top=-1; //top=-1,表示空栈,top=size-1 表示栈满
  12.     return s;
  13. }

  14. int push(STACK *s,ElemType *e)
  15. {
  16.     if(s->top==STACK_INIT_SIZE-1)
  17.         return 1;// 栈满,返回
  18.     else
  19.     {
  20.         s->top++;
  21.         *(s->base+s->top)=*e; //指针 格式
  22.     //或者 s->base[s->top]=*e; //数组 格式
  23.         return 0;
  24.     }
  25. }

  26. int pop(STACK *s,ElemType *e)
  27. {
  28.     if(s->top==-1)
  29.         return 1; //空栈,返回
  30.     else
  31.     {
  32.         *e=*(s->base+s->top); //指针格式 复制
  33.         //*e=s->base[s->top] //数组格式 赋值
  34.         s->top--;
  35.         return 0;    
  36.     }
  37. }

  38. //取栈顶元素
  39. int get_top(STACK *s,ElemType *e)
  40. {
  41.     if(s->top==-1)
  42.         return 1;
  43.     else
  44.     {
  45.         *e=*(s->base+s->top);
  46.         printf("the top data is %c\n",*e);
  47.         return 0;
  48.     }
  49. }

  50. int stack_empty(STACK *s)
  51. {
  52.     if(s->top==-1)
  53.         return 0; //栈空
  54.     else
  55.         return 1;//栈不空
  56. }

main.c
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "stack.h"

  4. int main()
  5. {
  6.     ElemType ch1='a';
  7.     ElemType ch='b';
  8.     STACK *stack;
  9.     stack=init_stack();
  10.     
  11.     push(stack,&ch1);
  12.     get_top(stack,&ch);    
  13.         
  14.     pop(stack,&ch);
  15.     printf("pop=%c\n",ch);

  16.     return 0;
  17. }






















阅读(915) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~