标签:Node index Java temp twl next 链表 双向 prev
public class TwoWayList<T> {
private class Node{
T data;
Node next = null;
Node prev = null;
public Node(T t) {
this.data = t;
}
}
private Node head;
private int len;
public TwoWayList() {
this.head = new Node(null);
this.len = 0;
}
//获取第index个节点
public Node getNode(int index) {
Node temp = head;
for(int i=0; i<index; i++) {
temp = temp.next;
}
return temp;
}
//向尾部添加节点
public void addTail(T t) {
Node temp = new Node(t);
Node last = getNode(len);
last.next = temp;
temp.prev = last;
len++;
}
//转换为循环链表
public void toCircular() {
Node last = getNode(len);
last.next = head;
head.prev = last;
}
//向index位置后面插入节点
public boolean insert(T t, int index) {
if(index<0 || index>len) {
System.out.println("Insert failed, index error!");
return false;
}
if(index == len) {
addTail(t);
return true;
}
Node prev = getNode(index);
Node next = getNode(index+1);
Node temp = new Node(t);
temp.next = next;
temp.prev = prev;
prev.next = temp;
next.prev = temp;
len++;
return true;
}
//删除Index位置的节点
public T delete(int index) {
if(index<0 || index>len) {
throw new IndexOutOfBoundsException("Delete failed, Index error!");
}
if(index == len) {
Node temp = getNode(index);
T t = temp.data;
Node prev = getNode(index-1);
prev.next = null;
len--;
return t;
}
Node prev = getNode(index-1);
Node next = getNode(index+1);
Node temp = getNode(index);
T t = temp.data;
prev.next = next;
next.prev = prev;
len--;
return t;
}
//正向输出链表
public void forwardp() {
Node temp = head;
for(int i=0; i<=len; i++) {
System.out.print(temp.data + "->");
temp = temp.next;
}
System.out.print(" length:" + len + "\n");
}
//反向输出链表
public void backp() {
Node temp = getNode(len);
for(int i=0; i<=len; i++) {
System.out.print(temp.data + "<-");
temp = temp.prev;
}
System.out.print(" length:" + len + "\n");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TwoWayList<Integer> twl = new TwoWayList<Integer>();
twl.addTail(1);
twl.addTail(2);
twl.insert(3, 2);
twl.insert(4, 3);
twl.addTail(5);
twl.delete(5);
twl.forwardp();
twl.backp();
}
}
Chrix9
发布了6 篇原创文章 · 获赞 0 · 访问量 75
私信
关注
标签:Node,index,Java,temp,twl,next,链表,双向,prev 来源: https://blog.csdn.net/weixin_44963741/article/details/104543172
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。