以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 C/C++编程思想 』  (http://bbs.xml.org.cn/list.asp?boardid=61)
----  栈的实现  (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=88044)


--  作者:葛靖青001
--  发布时间:11/30/2010 8:45:00 AM

--  栈的实现
【转自互联网】

#include<stdio.h>

  #include<conio.h>

  #include<stdlib.h>

  #define STACK_MAX_SIZE 10 //栈最大数据空间

  #define ERROR_STACK_EMPTY -1

  #define ERROR_MALLOC -2

  typedef int SData;         //栈数据类型

  typedef struct

  {

  SData *pSBase;

  int iSize;

  }STACK;

  void InitStack(STACK *s)

  {

  //分配空间

  s->pSBase=(SData *)malloc(STACK_MAX_SIZE*sizeof(SData));

  if(s->pSBase==NULL)

  exit(ERROR_MALLOC);

  s->iSize=0;

  }

  void Push(STACK *s,SData e)

  {

  if(s->iSize>=STACK_MAX_SIZE)

  {

  printf("栈空间不足!按任意键返回!\n");

  getch();

  return;//不执行任何操作,返回

  }

  //s->pSBase[s->iSize++]=e;

  s->pSBase[s->iSize]=e;

  s->iSize++;

  }

  SData Pop(STACK *s)

  {

  if(s->iSize==0)

  {

  printf("栈为空,无法出栈!\n");

  getch();

  exit(ERROR_STACK_EMPTY);//退出代码:ERROR_STACK_EMPTY

  }

  s->iSize--;

  return (s->pSBase[s->iSize]);

  }

  void DestoryStack(STACK *s)

  {

  if(s->iSize!=0)

  free(s->pSBase);

  }

  int main()

  {

  int i=0;

  STACK s;

  InitStack(&s);

  //测试栈

  for(i;i<11;i++)

  Push(&s,i);

  for(i=0;i<150;i++)

  printf("%d\n",Pop(&s));

  DestoryStack(&s);

  getch();

  return 0;

  }


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
46.875ms