用Java程序6-4双向链表求表元(Java语言描述) 采用双向链表做为线性表的存储结构,编写成员方法:求表元运算。 根据指定的位序号获取元素。 元素不存在时,输出error 输入: 第一行
时间: 2024-09-21 10:08:55 浏览: 32
数据结构c版(1)-线性表之双向带头循环链表代码
在Java中,我们可以创建一个双向链表(Doubly Linked List)来实现这个功能。首先,我们需要定义一个Node类来表示链表中的节点,并包含数据域和指向前后节点的引用。然后,可以创建一个DoublyLinkedList类,其中包含一个头节点和相关方法如`getElement(int index)`来进行表元的求解。
```java
// 定义双向链表节点
class Node {
int data;
Node prev;
Node next;
public Node(int data) {
this.data = data;
prev = null;
next = null;
}
}
// 双向链表类
public class DoublyLinkedList {
private Node head;
private Node tail;
// 初始化链表为空
public DoublyLinkedList() {
head = null;
tail = null;
}
// 添加元素到链表末尾
public void addElement(int data) {
Node newNode = new Node(data);
if (head == null) {
head = newNode;
tail = newNode;
} else {
newNode.prev = tail;
tail.next = newNode;
tail = newNode;
}
}
// 求表元运算,返回指定索引处的元素
public int getElement(int index) {
if (index < 0 || index >= size()) {
System.out.println("Error: Index out of range");
return -1; // 返回错误标记
}
Node current = head;
for (int i = 0; i < index; i++) {
current = current.next;
}
return current.data; // 返回当前节点的数据
}
// 获取链表长度
private int size() {
int count = 0;
Node temp = head;
while (temp != null) {
count++;
temp = temp.next;
}
return count;
}
}
```
使用这个类时,你可以创建一个新的DoublyLinkedList实例,添加元素,然后通过`getElement()`方法获取指定位置的元素:
```java
public static void main(String[] args) {
DoublyLinkedList dll = new DoublyLinkedList();
dll.addElement(1);
dll.addElement(2);
dll.addElement(3);
int elementAtThree = dll.getElement(2); // 获取索引为2的元素,即3
System.out.println(elementAtThree); // 输出:3
int invalidElement = dll.getElement(5); // 输出:Error: Index out of range
}
```
阅读全文