【常用数据结构及应用场景笔记】算法笔记---栈

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BaiHuaXiu123/article/details/88547468

1. 栈
通常所说的栈,是一种线性结构,在我们写程序也运用的比较广泛。

2. 栈的特点
后进先出,通俗点讲,栈的插入或者删除只能在表的"顶端"进行操作的线性表。
注:对于栈,表尾称之为栈顶(top);表头称之为栈低(bottom)
在这里插入图片描述
3.栈的操作
栈的基本操作:

1,栈的创建。	stackNew
2,压栈操作。	stackPush
3,得到栈顶的元素。	stackPop
4,计算栈的长度。	stackSize
5,清空一个栈。	stackEmpty

4. 栈的实现

//1.栈的定义
struct Stack<T> {
    capacity: u32,
    size: u32,
    in_vec: Vec<T>
}
impl<T> Stack<T> {
    //栈的创建
   fn stackNew(u:u32)->Stack<T>{
       Stack {
            capacity: c,
            size: 0,
            in_vec: Vec::with_capacity(c as usize)
        }
    }
    // 栈的大小
    pub fn stackSize(&mut self)->i32{
        self.size
    }
    // 压栈
    pub fn stackPush(&mut self, value: T)->bool{
        if self.size == self.capacity {
            false
        } else {
            self.in_vec.push(value);
            self.size += 1;
            //Ok(&self.in_vec[(self.size - 1) as usize])
            true
        }
    }
    // 弹栈
    pub fn stackPop(&mut self)-> Option<T>{
         if self.size == 0 {
            None
        } else {
            self.size -= 1;
            self.in_vec.pop()
        }
    }
    // 清空栈
    pub fn stackEmpty(&mut self){
        self.in_vec = vec![];
        self.size = 0;
        self.capacity = 0;
    }
}

5. 栈的例子
LeetCode第20题,LeetCode之20-有效括号匹配

给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

[算法LeetCode笔记(Rust,Go,Python,JS实现)]LeetCode之20-有效括号匹配

猜你喜欢

转载自blog.csdn.net/BaiHuaXiu123/article/details/88547468