java线性表的顺序存储结构实现 线性表的链式存储结构实现 栈的顺序存储结构实现
时间: 2024-10-07 12:06:17 浏览: 37
在Java中,我们可以使用数组来实现线性表的顺序存储结构:
**顺序存储结构实现(Array List)**:
```java
import java.util.ArrayList;
public class LinearList {
private int capacity;
private Object[] elements;
public LinearList(int size) {
capacity = size;
elements = new Object[size];
}
// 添加元素
public void add(int index, Object obj) {
if (index < 0 || index > capacity) throw new IndexOutOfBoundsException();
System.arraycopy(elements, index, elements, index + 1, capacity - index);
elements[index] = obj;
}
// 删除元素
public void removeElement(Object obj) {
for (int i = 0; i < capacity; i++) {
if (elements[i].equals(obj)) {
System.arraycopy(elements, i + 1, elements, i, capacity - i - 1);
return;
}
}
}
// 其他操作...
}
```
而对于链式存储结构,我们可以使用节点(Node)和指针(Pointer)的概念:
**链式存储结构实现(LinkedList)**:
```java
import java.util.LinkedList;
public class LinkedListList {
private Node head;
static class Node {
Object data;
Node next;
Node(Object data) {
this.data = data;
next = null;
}
}
// 添加元素到链首
public void addFirst(Object obj) {
Node newNode = new Node(obj);
newNode.next = head;
head = newNode;
}
// 删除指定元素
public boolean removeElement(Object obj) {
Node current = head;
while (current != null) {
if (current.data.equals(obj)) {
head = current.next;
return true;
}
current = current.next;
}
return false;
}
// 其他操作...
}
```
至于栈的顺序存储结构实现,可以使用Array Stack或List Stack(如ArrayList)作为底层数据结构:
**顺序栈实现(Array Stack)**:
```java
import java.util.Stack;
public class StackImpl {
private int[] stackElements;
private int top;
public StackImpl(int size) {
stackElements = new int[size];
top = -1;
}
public void push(int item) {
if (top == stackElements.length - 1) throw new StackOverflowError();
stackElements[++top] = item;
}
public int pop() {
if (isEmpty()) throw new EmptyStackException();
return stackElements[top--];
}
// 其他操作...
}
```
以上都是基本的示例,实际使用时可能会加入更多错误处理和性能优化。
阅读全文