作者在 2008-11-09 08:55:38 发布以下内容
(一)采用的数据描述为:栈采用顺序结构
  #define STACKSIZE 100 
  typedef struct{int *base;
  int *top;
  int stacksize;
  }Sqstack;
  1.初始化  
  Sqstack init(Sqstack S)
  {S.base=(int)malloc(sizeof(int));
  if(!S.base) printf("OVERFLOW");
  S.top=S.base;
  stacksize=STACKSIZE;
  return S;}
  2.入栈
  Sqstack push(Sqstack S,int x)/*栈S中,插入新元素使其成为栈顶元素*/
  {if(S.top-S.base>=STACKSIZE) printf("OVERFLOW");
  *S.top++=x;
  return S;}
  3.出栈  
  Sqstack pop(Sqstack S,int e)/*栈S中,删除元素*/
  {if(S.top==S.base) printf("ERROR");
  e=*--S.top;
  return S;}
(二)采用的数据描述为:栈采用链式结构
  #define STACKSIZE 100 
  typedef struct SNOODE{int data;
  struct SNODE *next;
  }*Linkstack,SNODE;
  1.入栈
  Linkstack push(Linkstack S,int x)/*栈S中,插入新元素使其成为栈顶元素*/
  {p=(linklsit)malloc(sizeof(SNODE));
  if(!p) printf("OVERFLOW");
  P->data=x;p->next=s; s=p;
  return S;}
  2.出栈
  Linkstack pop(Linkstack S)/*栈S中,删除元素*/
  {if(!S) printf("ERROR");
  p=s;s=p->next;
  free(p);
  return S;}

数据结构 | 阅读 2278 次
文章评论,共1条
yangdongsen
2008-11-12 15:36
1
好啊这个
游客请输入验证码
浏览77319次