棧的兩種實現(陣列--鏈式)
阿新 • • 發佈:2021-01-19
陣列實現
package com.stack;
public class Stack_array {
private int[] s;//棧陣列
private int len;
public Stack_array()
{
s = new int[10];//初始化大小 10
}
public Stack_array(int num)
{
s = new int[num];//初始化大小 num
}
/*
* 壓入棧
*/
public void push(int val){
if(len >= s.length) //棧滿
{
//擴充套件棧空間
int[] ns = s.clone();
s = new int[ns.length+10];//一次拓展10個
for(int i = 0;i<ns.length;i++)
{
s[i] = ns[i];
}
s[len++] = val;//新值入棧
}else
{
s[len++] = val;
}
}
/*
*彈出棧頂元素
*/
public int pop(){
if(len != 0)
return s[--len];
else
{
System.out.print("棧空");
return 0;
}
}
/*
* 檢視棧頂元素
*/
public int peak(){
if(len != 0)
return s[len-1];
else
{
System.out.print("棧空");
return 0;
}
}
/*
* 檢視棧長度
*/
public int size( ){
return len;
}
/*
* 判斷棧是否為空
*/
public boolean isEmpty()
{
return len==0;
}
}
鏈式實現
package com.stack;
public class Stack_link {
class Node {
public int val;
public Node next;
public Node(int val)
{
this.val = val;
}
public Node()
{
}
}
private Node top;
private int len;
public Stack_link()
{
}
/*
* 壓入棧
*/
public void push(int val){
Node node = new Node(val);
node.next = top;
top = node;
len++;
}
/*
* 彈出棧頂元素
*/
public int pop(){
if(top == null)
{
System.out.print("棧空");
return 0;
}else
{
int val = top.val;
top = top.next;
len--;
return val;
}
}
/*
* 檢視棧頂元素
*/
public int peak(){
if(top==null)
{
System.out.print("棧空");
return 0;
}else
{
return top.val;
}
}
/*
*檢視棧長度
*/
public int size(){
return len;
}
/*
* 判斷棧是否為空
*/
public boolean isEmpty()
{
return len == 0;
}
}