代码拉取完成,页面将自动刷新
import java.security.PublicKey;
class ListNode{
public int data;
public ListNode prev;
public ListNode next;
public ListNode(int data) {
this.data=data;
}
}
public class MyRealLinkedList {
public ListNode head;//头
public ListNode last;//尾
//头插法
public void addFirst(int data) {
ListNode node=new ListNode(data);
if(this.head==null) {
this.head=node;
}else {
node.next=this.head;
this.head.prev=node;
this.head=node;
}
}
//尾插法
public void addLast(int data) {
ListNode node=new ListNode(data);
if(head==null) {
this.head=node;
this.last=node;
}else {
last.next=node;
node.prev=last;
last=node;
}
}
public ListNode findIndx(int index) {
ListNode cur=this.head;
while(index!=0) {
cur=cur.next;
index--;
}
return cur;
}
//任意位置插入,第一个数据节点为0号下标
public void addIndex(int index,int data) {
if(index < 0 || index > size()) {
System.out.println("不合法");
return;
}
if(index == 0) {
addFirst(head.data);
return;
}
if(index == size()) {
addLast(last.data);
return;
}
ListNode node=new ListNode(data);
ListNode cur=findIndx(index);
node.next=cur;
cur.prev.next=node;
node.prev=cur.prev;
cur.prev=node;
/**
* node.next=cur;
* cur.prev=node.prev;
* cur.prev.next=node;
* cur.prev=node;
*/
}
//查找是否包含关键字key是否在单链表当中
public boolean contains(int key) {
ListNode cur=this.head;
while(cur!=null) {
if(cur.data==key) {
return true;
}
cur=cur.next;
}
return false;
}
//删除第一次出现关键字为key的节点
public void remove(int key) {
ListNode cur=this.head;
while(cur!=null) {
if(cur.data==key) {
//头结点的时候
if(cur==this.head) {
this.head=this.head.next;
//防止只有一个节点
if(this.head==null) {
this.last=null;
}else {
this.head.prev=null;
}
}else {
cur.prev.next=cur.next;
//尾巴的时候
if(cur.next==null) {
this.last=cur.prev;
}else {
cur.next.prev=cur.prev;
}
}
return;
}else {
cur=cur.next;
}
}
}
//删除所有值为key的节点
public void removeAllKey(int key) {
ListNode cur=this.head;
while(cur!=null) {
if(cur.data==key) {
//头结点的时候
if(cur==this.head) {
this.head=this.head.next;
//防止只有一个节点
if(this.head==null) {
this.last=null;
}else {
this.head.prev=null;
}
}else {
cur.prev.next=cur.next;
//尾巴的时候
if(cur.next==null) {
this.last=cur.prev;
}else {
cur.next.prev=cur.prev;
}
}
cur=cur.next;
}else {
cur=cur.next;
}
}
}
//得到单链表的长度
public int size() {
if(this.head==null) {
return -1;
}
ListNode cur=this.head;
int count=0;
while (cur!=null) {
cur=cur.next;
count++;
}
return count;
}
//打印双向链表
public void display() {
ListNode cur=this.head;
while(cur!=null) {
System.out.print(cur.data+" ");
cur=cur.next;
}
System.out.println();
}
public void clear() {
ListNode cur=this.head;
while(cur!=null) {
ListNode curNext=cur.next;
cur.prev=null;
cur.next=null;
cur=curNext;
}
this.head=null;
this.last=null;
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。