public class Node <T extends Comparable<T>> {
T data;
Node prev;
Node next;
Node(){
}
Node(T val){
data = val;
} }
public class DLinkedList<T extends Comparable<T>> {
Node head;
Node tail;
DLinkedList(){
head = new Node();
tail = new Node();
tail.prev = head;
}
void insertInOrder(T value){
Node insert = new Node(value);
if(head.next==null){
head.next = insert;
insert.prev = head;
insert.next = tail;
tail.prev = insert;
}
else{
insert.prev = tail.prev;
tail.prev.next = insert;
tail.prev = insert;
insert.next = tail;
}
}
boolean find (T value){
boolean result = false;
Node tmp = head.next;
if (head!=null){
while(tmp!=null){
if(tmp.data.compareTo(value)!=0){
tmp = tmp.next;
}
else{
result = true;
break;
}
}
}
return result;
}
boolean findA (T value){
boolean result = false;
Node tmp = head;
if (head!=null){
while(tmp.next!=null){
if(tmp.next.data.compareTo(value)!=0){
tmp.next = tmp.next.next;
}
else{
result = true;
break;
}
}
}
return result;
}
void deleteA(T value){
Node tmp = head.next;
while(tmp.data.compareTo(value)!=0){
tmp = tmp.next;
}
if(tmp!=tail){
if(tmp==head.next)
head = tmp.next;
else
tmp.prev.next = tmp.next;
if (tmp==tail)
tail = tmp.prev;
else
tmp.next.prev = tmp.prev;
}
}
void delete(T value){
Node tmp = head.next;
if(find(value)){
while(tmp!=tail){
if(tmp.data.compareTo(value)!=0){
tmp = tmp.next;
}
else{
tmp.prev.next = tmp.next;
tmp.next.prev = tmp.prev;
break;
}
}
}
}
@Override
public String toString(){
Node tmp = head.next;
String result = "";
while(tmp!=tail){
System.out.println(tmp.data);
tmp = tmp.next;
}
return result;
} }
public class ListCheck {
public static void main(String[] args) {
DLinkedList list = new DLinkedList();
DLinkedList listA = new DLinkedList();
for(int i=0; i<10; i++){
list.insertInOrder(i);
listA.insertInOrder(i);
}
System.out.println(listA.findA(9));
System.out.println(list.find(9));
listA.toString();
System.out.println("");
list.toString();
} }
在findA中,移动tmp的方式是
tmp.next = temp.next.next
通过这种方式,您正在销毁当前指针,并将其重新路由到下一个节点(Java的浅层副本):
tmp-->[node1]-->[node2]
对tmp-->[node2]
的更改
我有一个智能组件,它调用一个从api检索所有信息的服务,并加载一组显示所有信息的哑组件。 当初始化时,智能组件从url中获取id,并将其发送给服务,以从api中获取所有数据,并且一切都按照预期工作,但是当我单击页面上的链接之一,该链接应该加载相同的页面但不同的id,url改变了,但不改变视图,并且我在控制台上也没有看到任何activity。 这是智能组件: 这是显示链接的哑组件: 这是从“第一个”
我想通过以下方式更改JButton的颜色: 为了进行更改,我必须补充: 但是,这会删除边缘周围的曲线,从而更改按钮的形状。有没有一种方法可以简单地改变颜色并保留其他属性?另一个例子是当你按下一个按钮而没有改变它的颜色时,颜色的改变(变暗)。 下面是一些代码,说明了这两个按钮之间的区别: 谢谢
我刚刚在我的项目中启用了迁移,并在中添加了几个字段: I并创建: 产生了以下输出: 显然一切都进行得很顺利,但在收到一个错误,即column CreatedOn不存在之后,我用服务器资源管理器查看了数据库,事实上,我的表中缺少了所有4个column。我做错了什么? 我发现了我的错误。不知何故,我有两个不同的文件和具有相同的文件大小,我认为两者都是必要的。我的服务器资源管理器正在使用,数据库更改为。
我从数据库中检索了很多数据,并使用这些数据创建了一个图表(其中一些是添加的) 现在我的问题是:有什么方法可以阻止程序四舍五入加倍,除非它是。75或更近?相反,在这个例子中,舍入到85?
本文向大家介绍Android中App字体大小不随系统改变而改变,包括了Android中App字体大小不随系统改变而改变的使用技巧和注意事项,需要的朋友参考一下 在 "设置" , "显示" , "字体大小" 里面我们可以设置系统字体大小 App界面字体,如果被修改之后,可能就达不到理想状态的效果,界面布局就发生了变化。 未修改过的效果(测试机型:Nexus 5): 正常
我创建了一个单链表函数,我的教授说,为了获得额外的学分,我们可以将其更改为双链表。我读了一些东西,比如添加一个prev_节点函数,比如这样。 然而,我不知道从那里去哪里。我知道我需要像这里一样加上一个尾巴和一个脑袋。 谁能告诉我,(不要为我做这件事),我必须做什么才能把我的链接列表变成一个双重链接列表?我知道我现在必须参考尾巴和头部,但我对如何做到这一点很困惑。