Python 官方文档:入门教程 => 点击学习
目录一:栈二:栈的实现三:栈的测试四:栈的应用(回文序列的判断)总结一:栈 栈是限制插入和删除只能在一个位置上进行的表,此位置就是表的末端,叫作栈顶。 栈的基本操作分为push(入
栈是限制插入和删除只能在一个位置上进行的表,此位置就是表的末端,叫作栈顶。
栈的基本操作分为push(入栈) 和 pop(出栈),前者相当于插入元素到表的末端(栈顶),后者相当于删除栈顶的元素。
public class LinearStack {
private int size = 5;
int top = -1;
private int[] stack;
public LinearStack() {
stack = new int[size];
}
public boolean isFull() {
boolean result = false;
if(top == size - 1) {
result = true;
}
return result;
}
public void push(int value) {
if(isFull())
stack = expansionStack();
top++;
stack[top] = value;
}
public int pop() {
if(top == -1)
throw new RuntimeException("栈空!出栈失败");
int result = stack[top] ;
top--;
return result;
}
public int[] expansionStack() {
size = size + 10;
int[] stackTemp = new int[size];
for (int i = 0; i < stack.length; i++) {
stackTemp[i] = stack[i];
}
return stackTemp;
}
public int getTop() {
return stack[top];
}
public String toString() {
String str = "[";
for (int i = 0; i <= top; i++) {
if(i == top)
str = str + stack[i] + "]";
else
str = str + stack[i] + ",";
}
return str;
}
}
public class LinearStackTest {
public static void main(String[] args) {
LinearStack linearStack = new LinearStack();
linearStack.push(1);
linearStack.push(2);
linearStack.push(3);
linearStack.push(4);
linearStack.push(5);
System.out.println("0:arrayStack " + linearStack.toString());
linearStack.push(6);
System.out.println("1:arrayStack: " + linearStack.toString());
System.out.println("获取栈顶元素:stack[top] = " + linearStack.getTop()+" top = " + linearStack.top);
System.out.println("出栈:stack[top] = " + linearStack.pop()+" top = " + linearStack.top);
System.out.println("2:arrayStack: " + linearStack.toString());
}
}
public class LinearStackChar {
private int size = 5;
int top = -1;
private char[] stack;
public LinearStackChar() {
stack = new char[size];
}
public boolean isFull() {
boolean result = false;
if(top == size - 1) {
result = true;
}
return result;
}
public void push(char value) {
if(isFull())
stack = expansionStack();
top++;
stack[top] = value;
}
public char pop() {
if(top == -1)
throw new RuntimeException("栈空!出栈失败");
char result = stack[top] ;
top--;
return result;
}
public char[] expansionStack() {
size = size + 10;
char[] stackTemp = new char[size];
for (int i = 0; i < stack.length; i++) {
stackTemp[i] = stack[i];
}
return stackTemp;
}
public char getTop() {
return stack[top];
}
public String toString() {
String str = "[";
for (int i = 0; i <= top; i++) {
if(i == top)
str = str + stack[i] + "]";
else
str = str + stack[i] + ",";
}
return str;
}
}
public class LinearStackCharTest {
public static void main(String[] args) {
String str = "abcba";
LinearStackChar linearStackChar = new LinearStackChar();
//讲字符串切割,存放在栈中
for (int i = 0; i < str.length(); i++) {
linearStackChar.push(str.charAt(i));
}
//存放完成,显示栈中的元素
System.out.println("stack = " + linearStackChar.toString());
//出栈
String result = "";
int length = linearStackChar.top;
System.out.println("top = " + length);
for (int i = 0; i <= length; i++) {
result = result + String.valueOf(linearStackChar.pop());
}
//出栈组成的字符串
System.out.println("result = " + result);
//判断是否相等
System.out.println("result = abcba? " + (result.equals("abcba") ? true : false));
}
}
到此这篇关于Java数据结构之栈的线性结构的文章就介绍到这了,更多相关Java栈的线性结构内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Java数据结构之栈的线性结构详解
本文链接: https://www.lsjlt.com/news/131917.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0