顺序存储栈的程序

2025-12-16 00:36:50
推荐回答(2个)
回答1:

  #include
  #include
  #define elemtype int

  typedef struct LsNode{
  elemtype *elem;//给栈以动态形式分配内存,elem=(elemtype *)malloc(sizeof(elemtype)*length);
  int length; //栈的空间大小,可以由用户来决定它的大小
  int top;
  } STACK;
  //顺序存储的栈结构,以及其相应算法

  void InitStack(STACK *S, int len)
  {//初始化空栈
  S->length=len;
  S->elem = (elemtype *)malloc(sizeof(elemtype)*len);
  S->top = -1;
  }

  int EmptyStack(STACK *S)
  {//判断是否栈空,为空则返回1,否则返回0
  if(S->top==-1){
  return 1;
  }
  else{
  return 0;
  }
  }

  int push(STACK *S, elemtype x)
  {//元素x进栈操作,成功返回1,否则返回0
  if(S->toplength-1){
  S->top++;
  S->elem[S->top]=x;
  return 1;
  }
  else{
  return 0;
  }

  }

  elemtype pop(STACK *S)
  {//出栈操作,返回出栈元素
  elemtype x;
  if(EmptyStack(S)){
  printf("栈为空");
  return 0;
  }
  else{
  x=S->elem[S->top];
  S->top--;
  return x;
  }
  }

  void Print(STACK *S)
  {//依次输出栈顶到栈底的所有元素
  int i;
  for(i=S->top;i>=0;i--){
  printf("%4d",S->elem[i]);
  }
  printf("\n");
  }

  int main(void)
  {
  STACK *s=(STACK*)malloc(sizeof(STACK));
  InitStack(s,100);
  push(s,1);
  push(s,2);
  push(s,4);
  Print(s);
  push(s,5);
  Print(s);
  pop(s);
  Print(s);

  }

回答2:

高难度问题啊!!!