class LinkedList{
public Node head;
//头插法
public void addFirst(int data){
Node node = new Node(data);
//如果单链表为空
if(this.head == null) {
this.head = node;
}else {
//链表至少也有一个节点
node.next = this.head;
this.head = node;
}
}
//尾插法
public void addLast(int data){
Node node = new Node(data);
if(this.head == null) {
this.head = node;
}else {
//找尾巴 cur.next == null
Node cur = this.head;
while(cur.next != null) {
cur = cur.next;
}
cur.next = node;
}
}
/**
* 找到index-1位置的节点
* 返回的是index-1位置的节点的引用
* @param index
* @return
*/
private Node searchIndex(int index) {
int count = 0;
Node cur = this.head;
while (count < index-1) {
cur = cur.next;
count++;
}
return cur;
}
private void checkIndex(int index) {
if(index < 0 || index > getLength()) {
throw new
IndexOutOfBoundsException("下标不合法");
}
}
public boolean contains(int key) {
Node cur = this.head;
while (cur != null) {
if(cur.data == key) {
return true;
}
cur = cur.next;
}
return false;
}
public int getLength() {
int count = 0;
Node cur = this.head;
while (cur != null) {
count++;
cur = cur.next;
}
return count;
}
// 找到插入位置前一个结点便可实现插入
public boolean addIndex(int index,int data){
checkIndex(index)
单链表习题
最新推荐文章于 2023-02-11 12:33:03 发布