java实现链表反转
1. java实现单链表的反转 java实现两个无序单链表合并成一个有序的单链表谁能给个效率较高的代码,谢谢!
实现两个链表的合并,编一程序将A表和B表归并成一个新的递增有序的单链表C你的意思是不是这样:a表和b表声明后,在自己内存空间的值就不变了,只是,IuVAbQ
2. 在Java中如何将数组中的数据倒置
最简单的算法就是设置一个临时变量,就像交换两个变量一样交换。更好的是使用链表,当然也可以使用ArrayCopy,Copy的时候把源数组最后一个赋给新数组的第一个,一个加,一个减。其他还有……
3. Java语言写出实现将单向链表顺序反转的函数
假设链表的节点定义如下:
class Node{
int i;
Node next;
}
那么其反回转函数为:
void reverse(Node l){
if(l==null) return;
Node p=null,q=l,r=l.next;
while(r!答=null){
q.next=p;
p=q;
q=r;
r=r.next;
}
q.next=p;
l=q;
}
4. Java培训班的课程一般都学习什么内容呢
不同学校的课程肯定是不一样的,但是正规的培训学校课程一定都包括基础课程和进阶课专程。
首先是Java技术属的核心和基础JavaSE,这一阶段会接触到Java基础语法、面向对象编程思想、Java常用API、多线程并发编程、数据结构/集合框架、IO/网络编程/反射/设计模式。这一阶段往往也是最重要的,后面很多知识和框架的应用都是基于这一基础来的。学完这一部分,要一些简单的桌面应用程序设计没有问题。
接下来进阶课程中,要用到的就是数据库(MySQL)和JDBC。在之后,要学习到的是JavaWeb开发技术。学完可以具备开发个人网站和企业网站的能力。
接下来就是最重要的实战项目了,一般实战项目会占整个课程的少半时间,从浅入深,会接触到大小型企业内各种真实实战项目。 比如内容管理系统(CMS)、智能商贸系统、流行框架应用、B2C/商城项目等。完成这些项目,你对市面上大多数web应用开发、管理系统开发、运用前沿技术开发都得心应手。
5. java反转链表 大神给我添加个注释好么,我自己研究
publicclassLinktest{
//反转方法,传入一个链表
publicstaticLinkNodereversal(LinkNodelist){
//pre用来存放前一个链表节点
LinkNodepre=list;
//取出下一个链表节点,cru用来存放当前链表节点
LinkNodecru=list.getNext();
//next用来存放下一个链表节点
LinkNodenext;
//如果当前节点不为空(这里意思是如果传进来的list有下一个节点就继续执行)
while(null!=cru){
//取出当前节点的下一个节点
next=cru.getNext();
//把前一个节点赋予当前节点的下一个节点(这里产生实际改变)
cru.setNext(pre);
//把当前节点变量赋予前一个节点的变量
pre=cru;
//把下一个节点变量赋予当前
cru=next;
}
//循环体内会循环到方法传入的LinkNode没有前一个节点为止
//因为几次交换的原因
//因为循环结束,所以把next赋空
list.setNext(null);
//因为循环的原因,前一个节点实际是第一个节点
list=pre;
//返回第一个节点
returnlist;
}
publicstaticvoidmain(String[]args){
LinkNodehead=newLinkNode(0);
LinkNodetmp=null;
LinkNodecur=null;
for(inti=1;i<10;i++){
tmp=newLinkNode(i);
if(1==i){
head.setNext(tmp);
}else{
cur.setNext(tmp);
}
cur=tmp;
}
LinkNodeh=head;
while(null!=h){
System.out.print(h.getVal()+"");
h=h.getNext();
}
head=reversal(head);
System.out.println(" **************************");
//打印反转后的结果
while(null!=head){
System.out.print(head.getVal()+"");
head=head.getNext();
}
}
}
6. 请用C或者Java语言写出实现将单向链表顺序反转的函数。
ListItem* reverseList(ListItem *pHead){
ListItem *p1,*p2;
p1=pHead;
p2=0;
while(p1!=0){
pHead=p1;
p1=p1->next;
pHead->next=p2;
p2=pHead;
}
return pHead;
}
7. Java HashMap扩容的时候,为什么要把Entry链表反转
需要将链表重新整理到新表当中,因为newCap是oldCap的两倍所以回原节点的索引 值要么答和原来一样,要么就是原(索引+oldCap)和JDK 1.7中实现不同这里不存在rehash,直接使用原hash 值JDK 1.7中resize过程是在链表头插入,这里是在链表尾插入
8. 用Java实现的数据链表翻转程序
只是我的实现,应该不是最好的,毕竟使用了类库里的排序方法。
publicclassDemo{
publicstaticvoidmain(String[]args){
//初始化链表
List<Object>list=newArrayList<Object>();
for(inti=1;i<7;i++){
list.add(i);
}
Object[]arrys=list.toArray();
intlength=arrys.length;
//存放结果的数组
Object[]result=newObject[length];
//intlen=2;
//intlen=3;
intlen=4;
for(inti=0;i<length;i=i+len){
//最后一次
if(length-i<len){
len=length-i;
System.array(arrys,i,result,i,len);
break;
}
Object[]arry=newObject[len];
System.array(arrys,i,arry,0,len);
Demo.sortDesc(arry);
System.array(arry,0,result,i,len);
}
System.out.println(Arrays.toString(result));
}
/**
*自定义比较器反向排序
*@paramarrys
*@return
*/
publicstaticObject[]sortDesc(Object[]arrys){
Arrays.sort(arrys,newComparator<Object>(){
@Override
publicintcompare(Objecto1,Objecto2){
Integeri1=(Integer)o1;
Integeri2=(Integer)o2;
if(i1>i2){
return-1;
}elseif(i1<i2){
return1;
}else{
return0;
}
}
});
returnarrys;
}
}
9. 问个java链表逆转的问题
在java中对象的赋值都是传递引用
你在在Insert方法中并没有创建一个新节点,只是版引用之前的节权点
所以你在往第二个表中插入元素后,两个表的节点变量其实指向了一个对象
因此在Insert方法中要真正的创建一个新节点
void Insert(LinkedNode ln){
LinkedNode tmp = new LinkedNode(ln.value);
if(Head==null){ //如果头结点为空,那么附值给头结点
Head = tmp;
Last = Head; //Last(最后一个结点)指向Head,因为此时只有一个结点,所以即是头结点,也是最后一个结点
} else {
Last.next = tmp; //将要插入的结点附给Last.next
Last.next.previous = Last; //新插入的结点的前一结点指向Last
Last = Last.next; //更新Last为最后一个
}
}