数据结构用链表来实现------》Java
2023-06-13 09:13:04 时间
public class Stack<E> implements Iterable {
private Node<E> head;//头结点
private int Num;//栈中元素个数
//内部类,定义结点
private class Node<E> {
private E data;//存储元素数据
private Node<E> next;//结点
//重载构造器
public Node(E data, Node<E> next) {
this.data = data;
this.next = next;
}
}
public Stack() {
this.head = new Node<>(null, null);
}
//判断栈是否为空
public boolean isEmpty() {
return Num == 0;
}
//获取栈元素的个数
public int size() {
return Num;
}
//添加元素压入栈
public void push(E e) {
//改元素存储到新结点中
Node<E> newNode = new Node<>(e, null);
//插入ixn结点到栈
newNode.next = head.next;
head.next = newNode;
//元素加1
Num++;
}
//弹出栈顶元素(删除顶栈元素)
public E pop() {
//找到第一个结点
Node<E> fristnode = head.next;
//判断第一个结点是否为null
if (fristnode == null) {
return null;
} else {
//让首结点指向的第一个结点
head.next = fristnode.next;
Num--;
}
return fristnode.data;
}
public String toString() {
Node<E> p = head;
String ans = "";
while (p.next != null) {
p = p.next;
ans += p.data + " ";
}
return ans;
}
//遍历
@Override
public Iterator iterator() {
return new SIterator();
}
public class SIterator implements Iterator {
private Node<E> n;//记录结点
public SIterator() {
this.n = head;
}
@Override
public boolean hasNext() {
return false;
}
@Override
public Object next() {
n = n.next;
return n.data;
}
}
}
class Test1 {
//这是一个main方法,是程序的入口:
public static void main(String[] args) {
Stack<Integer> l1 = new Stack<>();
l1.push(1);
l1.push(2);
l1.push(3);
l1.push(4);
l1.push(5);
l1.push(6);
for (Object o : l1) {
//打印
System.out.println(o);
}
//打印
//打印
System.out.println("输出所有元素:"+l1.toString());
System.out.println("栈是否为空:"+l1.isEmpty());
System.out.println("弹出栈顶元素:"+l1.pop());
}
}
相关文章
- 关于 java JSONArray JSONObject转换问题
- java输出值取后两位小数,Java输出结果保留两位小数
- java是面向对象还是面向过程_Java面向对象编程和面向过程编程的区别[通俗易懂]
- java之MD5
- java 读取字符串文件_Java读取文件为字符串
- 【说站】java数组引用如何实现
- java url加密_Java实现url加密处理的方法示例
- idea创建java项目的步骤_Java为什么新建不了项目
- 【Java】Best coding practices every java developer should
- iceberg的java api使用
- Java IO系列(五):读写对象ObjectOutputStream和ObjectInputStream详解编程语言
- Java 绘制环形的文字 (Circle Text Demo)详解编程语言
- Java数据结构和算法(七)——链表详解编程语言
- java 数据结构与算法—链表详解编程语言
- 客户端建立Redis集群:Java客户端指南(redis集群java)
- 时间解决Redis Java中过期时间设置问题(redisjava过期)
- 策略Java优化Redis过期策略(redisjava过期)
- 实战探索:Java中使用Redis缓存(java的redis案例)
- Java 关闭 Redis 连接的指南(java关闭redis)
- 策略Java中Redis实现过期策略实践(redisjava过期)
- Java操作Redis实现数据快速存取(java访问redis)