数据结构_链栈

#include <iostream>
#include <malloc.h>
#include <stdlib.h>
#define OK 0
#define OVER -1
#define ERROR -2
using namespace std;

typedef int elem_type;
typedef int function_type;
typedef struct stack
{
   elem_type data;
   struct stack *back;
}Stack;
/*********************************************
   功能:构造一个栈并将栈初始化
*********************************************/
Stack* Init_Stack(void)
{
   Stack *top = (Stack *)malloc(sizeof(Stack));
   if( top == NULL )
     exit(OVER);
   top->back = NULL;
   return top;
}
/*********************************************
   功能:判断栈是否为空
*********************************************/
bool Empty_Stack(Stack *top)
{
   if( top->back == NULL)
     return true;
   else
     return false;
}
/*********************************************
   功能:获取栈的长度
*********************************************/
function_type Len_Stack(Stack *top)
{
   int len = 0;
   top = top->back;
   while(top)
   {
      ++len;
      top = top->back;
   }
   return len;
}
/*********************************************
   功能:将栈销毁
*********************************************/
function_type Clear_Stack(Stack *top)
{
   Stack *temp = NULL;
   while(top)
   {
      temp = top->back;
      free(top);
      top = temp;
   }
   return OK;
}
/*********************************************
   功能:获取栈顶元素
*********************************************/
function_type Get_Stack(Stack *top,elem_type *e)
{
   if( Empty_Stack(top) )
     exit(OVER);
   *e = top->back->data;
   return OK;
}
/*********************************************
   功能:删除栈顶元素
*********************************************/
function_type Pop_Stack(Stack *top,elem_type *e)
{
   if( Empty_Stack(top) )
     exit(OVER);
   Stack *temp = top->back;
   *e = temp->data;
   top->back = temp->back;
   free(temp);
   return OK;
}
/*********************************************
   功能:增加栈顶元素
*********************************************/
function_type Push_Stack(Stack *top,elem_type e)
{
   Stack *temp = (Stack *)malloc(sizeof(Stack));
   if( temp == NULL )
     exit(OVER);
   temp->data = e;
   temp->back = top->back;
   top->back = temp;
   return OK;
}
/*********************************************
   功能:输出栈中的所有数据
*********************************************/
function_type Printf_Stack(Stack *top)
{
   if( Empty_type(top) )
     exit(OVER);
   top = top->back;
   while(top)
   {
      cout<<setw(5)<<top->data;
      top = top->back;
   }
   cout<<endl;
   return OK;
}
int main(int,char **)
{
   return OK;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值