栈的一系列操作(适合数据结构初学者看)

//***************************************************************//
//栈的表示和实现 (爱X的味道)//
//*************************************************************//
/*
  typedef struct z_stack_node
  {
    StackElementType elem[stack_size];
	int top;
  }z_stack;
  void InitStack(z_stack *stack)
  {
    stack->top=-1;
  }
  int Push(z_stack *stack, StackElementType x)
  {
    if(stack->top ==stack_size)
	  return FALSE;
	stack->top++;
	stack->elem[stack->top]=x;
	return TRUE;
  }
  int Pop(z_stack *stack, StackElementType *x)
  {
	if(stack->top == -1)
	  return FALSE;
	*x=stack->elem[stack->top];
	stack->top--;
	return TRUE;
  }
  int GetTop(z_stack *stack, StackElementType *x)
  {
    if(s->top == -1)
	  return FALSE;
	*x =stack->elem[stack->top];
	return TRUE;
  }
*/
//**************************************************************//
************双端顺序栈 (爱X的味道)*******************
//*************************************************************//
/*
typedef struct z_stack
{
  StackElementType stack[M];
  int top[2];
}z_dstack;
void Init(z_dstack *dstack)
{
  dstack->top[0]=-1;
  dstack->top[1]=M;
}
int Push(z_dstack *sdtack,StackElementType x,int i)
{
  if(dstack->top[0]+1==dstack->top[1])
     return FALSE;
   switch(i)
   {
     case 0:
	   dstack->top[0]++;
	   dstack->stack[dstack->top[0]]=x;
	   break;
	 case 1:
	   dstack->top[1]--;
	   dstack->stack[dstack->top[1]]=x;
	   break;
	 default:
	   return FALSE;
   }
   return TRUE;
}
int Pop(z_dstack *dstack,StackElementType x,int i)
{
  switch(i)
  {
    case 0:
	  if(dstack->top[0]==-1)
	    return FALSE;
	  x=dstack->stack[dstack->top[0]];
	  dstack->top[0]--;
	  break;
	case 1:
	  if(dstack->top[1]==M)
	    return FALSE;
	  x=dstack->stcak[dstack->top[1]];
	  dstack->top[1]++;
	  break;
	default:
	   return FALSE;
  }
  return TRUE;
}
*/

//*****************************************************************//
*****************链栈的操作(爱X的味道)********************///
//*****************************************************************//
/*
typedef struct z_node
{
  StackElementType data;
  struct z_node *next;
}z_link_stack;
//进栈操作 就像头插法
int Push(z_link_stack *top,StackElementType x)
{
  z_link_stack *tmp;
  tmp=(z_link_stack *)malloc(sizeof(z_node));
  if(tmp==NULL) 
    return FALSE;
  tmp->data=x;
  tmp->next=top->next;
  top->next=tmp;
  return TRUE;
}
int Pop(z_link_stack *top,StackElementType *x)
{
  z_link_stack *tmp;
  tmp=top->next;
  if(tmp==NULL)
    return FALSE;
  top->next=tmp->next;
  *x =tmp->data;
  free(tmp);
  return TRUE;
}
*/

//****************************************************************//
********************多栈操作(爱X的味道)***********************//
//****************************************************************//
/*
typedef struct z_node
{
  StackElementType data;
  struct z_node *next;
}z_link_stack,*link_stack;
link_stack top[M];
//第i号栈的进栈操作
int Push(z_link_stack *top[M],int i,StackElementType x)
{
  z_link_stack *tmp;
  tmp=(z_link_stack *)malloc(sizeof(z_link_stack));
  if(tmp == NULL)
    return FALSE;
  tmp->data=x;
  tmp-next=top[i]->next;
  top[i]->next=tmp;
  return TRUE;
}
int Pop(z_link_stack *top[M],int i,StackElementType x)
{
  z_link_stack *tmp;
  tmp=top[i]->next;
  if(tmp == NULL)
    return FALSE;
  x=tmp->data;
  top[i]->next=tmp->next;
  free(tmp);
  return TRUE;
}
*/
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值