重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
public void addFirst(int data) { //头插
DLinkedNode newNode = new DLinkedNode(data);//加入的新节点
DLinkedNode next = head.next;
newNode.next = next;
next.prev = newNode;
head.next = newNode;
newNode.prev = head;
}
public void addLast(int data) {//尾插
DLinkedNode newNode = new DLinkedNode(data);//新插入的节点
DLinkedNode prev = head.prev;
newNode.next = head;
head.prev = newNode;
newNode.prev = prev;
prev.next = newNode;
}
public void addIndex(int index,int data) {//任意位置插入
int size = size();
if(index < 0 || index > size){
return;
}
if(index == 0){
addFirst(data);
return;
}
if(index == size) {
addLast(data);
return;
}
DLinkedNode next = getPos(index);
DLinkedNode prev = next.prev;
DLinkedNode newNode = new DLinkedNode(data);
prev.next = newNode;
newNode.prev = prev;
next.prev = newNode;
newNode.next = next;
}
这里用到的计算链表长度的方法:
public int size(){
int size = 0;
for(DLinkedNode cur = head.next; cur != head; cur = cur.next) {
size++;
}
return size;
}
和查找链表中某一位置的方法:
public DLinkedNode getPos(int index) {
DLinkedNode cur = head.next;
for(int i = 0; i < index; i++){
cur = cur.next;
}
return cur;
}
public boolean contains(int key) {//查找是否包含关键字key的节点
for(DLinkedNode cur = head.next; cur != head; cur = cur.next) {
if(cur.val == key){
return true;
}
}
return false;
}
public void remove(int key){
DLinkedNode toRemove = find(key);
if(toRemove == null) {
return;
}
DLinkedNode prev = toRemove.prev;
DLinkedNode next = toRemove.next;
prev.next = next;
next.prev = prev;
}
这里用到查找关键字key在链表中的位置的方法:
public DLinkedNode find(int key) {
for(DLinkedNode cur = head.next; cur != head; cur = cur.next) {
if(cur.val == key){
return cur;
}
}
return null;
}
public void removeAll(int key){
while (true){
DLinkedNode toRmove = find(key);
if(toRmove == null){
return;
}
DLinkedNode prev = toRmove.prev;
DLinkedNode next = toRmove.next;
prev.next = next;
next.prev = prev;
}
}
public void display(){
System.out.print("正向:[");
for(DLinkedNode cur = head.next; cur != head; cur = cur.next){
System.out.print(cur.val);
if(cur.next != head){
System.out.print(",");
}
}
System.out.println("]");
System.out.println("反向:[");
for(DLinkedNode cur = head.prev; cur != head; cur = cur.prev){
System.out.print(cur.val);
if(cur.prev != head){
System.out.print(",");
}
}
System.out.println("]");
}
public void clear(){
head.next = head;
head.prev = head;
}
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。