这篇文章讲述的是数据结构部分的内容
的java实现,如有错误或者不当之处,还望各位大神批评指正。
问题描述
试写一个算法将连个链表连接在一起
算法分析
该算法是链表的基本操作,假设有两个表L1和L2,只需将L1的表尾和L2的表头连接起来即可
时间复杂度O(n),空间复杂度O(1)
代码实现
注:单链表的实现请移步https://blog.csdn.net/u013634252/article/details/81230093这里不再赘述。
/**
* @explain Append方法: 将表L2接到表的后边
* @param L2 表L2
* @return List
* @throws
* @author 叶清逸
* @date 2018年7月27日 上午11:02:22
*/
public LinkList append (LinkList L2){
/*两个指针分别指向L1和L2的头指针*/
Element p = head ;
Element q = L2.head ;
/*获取表L1的最后一个元素*/
for(int i=0 ; i<LENGTH ; i++){
p = p.next ;
}
/*连接操作*/
p.next = q.next ;
/*返回连接好的L1*/
return this ;
}
- 例子
/*初始化L1和L2并放入数据*/
LinkList L1 = new LinkList() ;
L1.init();
L1.put(3);
L1.put(5);
L1.put(8);
L1.put(11);
LinkList L2 = new LinkList() ;
L2.init();
L2.put(2);
L2.put(6);
L2.put(8);
L2.put(9);
L2.put(11);
L2.put(15);
L2.put(20);
System.out.print("L1:");
L1.print();
System.out.print("L2:");
L2.print();
System.out.println(L1.append(L2));
}
}
样例输出
L1:3 5 8 11
L2:2 6 8 9 11 15 20
LinkList:[3,5,8,11,2,6,8,9,11,15,20]