数据结构----栈,队列 及应用

========================================================================================

                                                                                        栈     和    队   列
--------------------------------
顺序栈的各种基本操作

#include<iostream>
using namespace std;
#define StackSize 100
typedef char DataType;

typedef struct
{
         DataType data[StackSize];
         int top;
}SeqStack;

void Initial(SeqStack*S)  // 栈 置 空
{
     S->top=-1;
}

int IsEmpty (SeqStack *S)    // 判断栈空
{
   return S->top==-1;
}

int IsFull(SeqStack *S)     //  判断栈满
{
 return S->top==StackSize-1;
}

void push(SeqStack *S,DataType x)     //近栈
{
 if(IsFull(S))
 {cout<<"栈上溢"; }
  S->data[++S->top]=x;
}

DataType Pop(SeqStack *S)      // 出栈
{
 if(IsEmpty(S))
 {cout<<"栈下溢";return 0;}
 return S->data[S->top--];
}

DataType Top (SeqStack *S)     // 取栈顶元素
{
   if(IsEmpty(S))
 {cout<<"栈空";return 0;}
   return S->data[S->top];
}
int main()
{
  SeqStack S;
  DataType first,sec;
  Initial(&S);
  push(&S,'p');
  push(&S,'o');
  first=Top(&S);
  Pop(&S);
  sec=Top(&S);
  cout<<first<<sec<<endl;
  return 0;
}
---------------------------------------------------------

链栈的入出栈


#include<iostream>
using namespace std;
typedef char DataType;
typedef struct stacknode
{
 DataType data;
 struct stacknode*next;
 //char *next;
} StackNode;
 
typedef struct
{
 StackNode *top;
}LinkStack;

void Initial(LinkStack *S)
{
 S->top=NULL;
}

int IsEmpty(LinkStack*S)
{
  return S->top==NULL;
}

void Push(LinkStack *S,DataType x)
{
   StackNode *p=new StackNode;
   p->data=x;
   p->next=S->top;
   S->top=p;
}
  
DataType Pop(LinkStack *S)
{
 DataType x;
    StackNode *p=S->top;
   

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值