悟已往之不谏,知来者之可追

栈和队列

第三章、栈

一、定义、

  栈是限定仅在表尾进行插入或删除的线性表。

二、实现(顺序存储):

  利用数组的顺序存储依次存放自栈底到栈顶的数据元素。

三、数据结构:

  

1 typedef struct{
2      elemtype data[100];   //利用数组进行存取
3      int top;        //栈顶
4     int base;        //栈底
5 }Sqstack
View Code

 

四、代码实现:

#include<iostream>
using namespace std;
#define Max 100 
typedef struct {
    int data[Max];
    int base;
    int top;
    int length;//表示栈内元素个数 
}Stack; //定义栈类型

//初始化栈
void Init_stack(Stack& s){
    s.base=0;
    s.top=0;
    s.length=s.top-s.base;
}

//获得栈顶元素
int get_top(Stack s){
    if(s.length!=0){
    cout<<s.data[s.top-1];
    return s.data[s.top-1];
    
    }
    else
        return -1;
} 
//插入元素
bool push(Stack& s,int i){
    if(s.length<100){
        s.data[s.top]=i;
        s.length=s.top-s.base;
        s.top+=1;
        return true;
    }else{
        return false;
    }
}
//删除元素
bool pop(Stack& s){
    if(s.length>0){
        s.top--;
        s.length=s.top-s.base;
    }else{
        return false;
    }
} 
int main(){
    Stack s;
    Init_stack(s);
    int i;
    push(s,10);
    push(s,20);
    get_top(s);
} 
View Code

 

 

三、应用、

 

  1、由于栈结构的后进先出的特性。

 

  2、可以应用在数制转换、括号匹配、

 

posted @ 2018-04-08 19:16  monty1  阅读(136)  评论(0编辑  收藏  举报