数据结构之栈 男娘i 2022-08-11 03:27 179阅读 0赞 栈是一种先进后出的线性结构,只允许在一端插入删除,属于逻辑结构。 栈的定义 package com.zhiru; /* * 栈是一种先进后出的数据结构. */ public class MyStack<E> { //栈顶指针 private int top=-1; private E[] s; //栈的最大容量. private int maxSize=100; MyStack(E[] e){ s=e; } //压栈 public void push(E c){ s[++top]=c; } //弹栈 public E pop(){ return s[top--]; } //获取栈顶元素 public E getTop(){ return s[top]; } public boolean isEmpty(){ return top==-1; } public int getSize(){ return top+1; } public void printStack(){ if(!isEmpty()){ int i=top; while(i>=0){ System.out.print(s[i]+" "); i--; } System.out.print("\n"); } } } 测试 package com.zhiru; public class TestStack { // public static int Location(char[]x,char v){ // int p=0; // while(p<x.length){ // if(v==x[p]) // break; // else // p++; // } // return p+1; // } //括号匹配。 public static void kuoHao(String s){ int len=s.length();//获取字符串长度. char[]x=new char[len]; Integer[]s_len=new Integer[len]; MyStack<Integer> ms=new MyStack<Integer>(s_len); for(int i=0;i<len;i++){ x[i]=s.charAt(i); } //扫描字符串数组 for(int j=0;j<len;j++){ int pos; if(x[j]=='(') ms.push(j);//左括号,位置进栈 else if(x[j]==')'){//右括号,弹栈。 pos=ms.pop(); if(pos>=0) System.out.println("第"+(pos+1)+"个左括号与第"+(j+1)+"个右括号匹配!"); else System.out.println("没有与第"+(j+1)+"个右括号匹配的左括号"); } } //栈中还有左括号 while(ms.isEmpty()==false){ System.out.println("没有与第"+(ms.pop()+1)+"个左括号匹配的右括号"); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Character[]a={'1','2','3','4','5'}; Integer[] x={2,3,4,5,6,7,8}; MyStack<Character> ms=new MyStack<Character>(a); MyStack<Integer> ms1=new MyStack<Integer>(x); for(int i=0;i<a.length;i++){ ms.push(a[i]); } for(int m=0;m<x.length;m++){ ms1.push(x[m]); } System.out.print("栈顶元素是"+ms.getTop()+"\n"); ms.printStack(); System.out.print("栈顶元素是"+ms1.getTop()+"\n"); ms1.printStack(); String s="((()))"; String s2="((())"; // String s3="(()))"; kuoHao(s); kuoHao(s2); // kuoHao(s3); } } 栈顶元素是5 5 4 3 2 1 栈顶元素是8 8 7 6 5 4 3 2 第3个左括号与第4个右括号匹配! 第2个左括号与第5个右括号匹配! 第1个左括号与第6个右括号匹配! 第3个左括号与第4个右括号匹配! 第2个左括号与第5个右括号匹配! 没有与第1个左括号匹配的右括号
相关 数据结构之栈 一.什么是栈? 本文将介绍一个重要的数据结构—栈,和之前讲到的链表、数组一样也是一种数据呈线性排列的数据结构,不过在这种结构中,我们只能访问最新添加的数据。栈就像是一摞书, た 入场券/ 2022年10月14日 10:49/ 0 赞/ 173 阅读
相关 数据结构之栈 栈的介绍 1)栈是一个先入后出的有序列表 2)允许插入和删除的一端,为变化的一端,称为栈顶,另一端是固定的一端,为栈底 数组模拟栈 ![在这里插入图片描述][ ╰+攻爆jí腚メ/ 2022年08月31日 13:23/ 0 赞/ 166 阅读
相关 数据结构之栈 栈是一种先进后出的线性结构,只允许在一端插入删除,属于逻辑结构。 栈的定义 package com.zhiru; / 栈是一种先进后出 男娘i/ 2022年08月11日 03:27/ 0 赞/ 180 阅读
相关 数据结构之栈 1、定义:栈(stack)是限制在插入和删除只能在一个位置进行操作的一种表结构,该合位置是表的末端,称作栈顶(top),对栈的基本操作的push()进栈和pop()出栈,一般栈 ╰半夏微凉°/ 2022年08月06日 01:05/ 0 赞/ 197 阅读
相关 数据结构之栈 栈是一种数据结构,特点是先进后出。比较通俗的说那就一个容器一端是封闭的,只能是先来的后出去。 先是写一个使用数组的栈类ArrayStack. / ArraySt 秒速五厘米/ 2022年07月12日 03:43/ 0 赞/ 217 阅读
相关 数据结构之栈 头文件: using namespace std; template <class T> class MyStack { 妖狐艹你老母/ 2022年05月27日 05:39/ 0 赞/ 201 阅读
相关 数据结构之栈 一、顺序栈 1.0 理解栈 栈是一种比线性表还要简单的数据结构,因为他就是对线性表的限制后的数据结构 即 只允许在线性表的尾部进行插入和删除操作 偏执的太偏执、/ 2022年05月25日 02:37/ 0 赞/ 244 阅读
相关 数据结构之栈 什么是栈 从栈的操作特性上来看,栈是一种 “操作受限”的线性表,只允许在一端插入和删除数据,且满足先进后出、后进先出的特性。 实现一个栈 栈可以用数组或链表来实现 Bertha 。/ 2022年05月16日 14:29/ 0 赞/ 231 阅读
相关 数据结构之栈 数据结构栈的相关学习: 简介 限定仅在表尾进行插入和删除操作的线性表。允许插入和删除的一端成为栈顶,另一端成为栈低,不含任何元素的栈成为空栈,栈又称为先进先出的线性表 今天药忘吃喽~/ 2022年02月05日 05:09/ 0 赞/ 282 阅读
还没有评论,来说两句吧...