File tree Expand file tree Collapse file tree
test/java/general/node/other Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -26,14 +26,14 @@ public <E> int getLengthOfCircle(Node<E> head){
2626
2727 Node <E > slow = firstMeetingNode ;
2828 Node <E > fast = firstMeetingNode ;
29+
2930 for (int i = 1 ; ; i ++){
3031 slow = slow .getNext ();
3132 fast = fast .getNext ().getNext ();
3233 if (slow == fast ){
3334 return i ;
3435 }
3536 }
36-
3737 }
3838
3939
Original file line number Diff line number Diff line change 1+ package general .node .other ;
2+
3+ import general .node .Node ;
4+
5+ /**
6+ * 两个使用链表表示的大数相加
7+ * @author javon
8+ *
9+ */
10+ public class BigNumberAdd {
11+
12+ static Node <Integer > NODE_ZERO = new Node <Integer >(0 ,null );
13+
14+ public Node <Integer > add (Node <Integer > head1 , Node <Integer > head2 ){
15+ int carry = 0 ;
16+ int tmp = 0 ;
17+ Node <Integer > result = new Node <Integer >();
18+ Node <Integer > pre = new Node <Integer >();
19+ if (head1 == null && head2 == null ){
20+ return null ;
21+ }else if (head1 == null ){
22+ return head2 ;
23+ }else if (head2 == null ){
24+ return head1 ;
25+ }else {
26+ tmp = head1 .getValue () + head2 .getValue ();
27+ }
28+ if (tmp >= 10 ){
29+ tmp -= 10 ;
30+ carry = 1 ;
31+ }
32+ pre .setValue (tmp );
33+
34+ result = pre ;
35+
36+ while (true ){
37+ Node <Integer > next = new Node <Integer >();
38+ if (head1 .getNext () == null && head2 .getNext () == null ){
39+ if (carry == 1 ){
40+ next .setValue (carry );
41+ pre .setNext (next );
42+ }
43+ return result ;
44+ }else if (head1 .getNext () == null ){
45+ head2 = head2 .getNext ();
46+ tmp = head2 .getValue () + carry ;
47+ }else if (head2 .getNext () == null ){
48+ head1 = head1 .getNext ();
49+ tmp = head1 .getValue () + carry ;
50+ }else {
51+ head2 = head2 .getNext ();
52+ head1 = head1 .getNext ();
53+ tmp = head1 .getValue () + head2 .getValue () + carry ;
54+ }
55+ if (tmp >= 10 ){
56+ tmp -= 10 ;
57+ carry = 1 ;
58+ }else {
59+ carry = 0 ;
60+ }
61+ next .setValue (tmp );
62+ pre .setNext (next );
63+ pre = next ;
64+
65+ }
66+ }
67+
68+ }
Original file line number Diff line number Diff line change 1+ package general .node .other ;
2+
3+ import static org .junit .Assert .fail ;
4+
5+ import java .util .Random ;
6+
7+ import org .junit .Before ;
8+ import org .junit .Test ;
9+
10+ import general .node .Node ;
11+
12+ public class BigNumberAddTest {
13+
14+ private Node <Integer > head1 = new Node <Integer >(9 , null );
15+ private Node <Integer > head2 = new Node <Integer >(8 , null );
16+
17+ @ Before
18+ public void init (){
19+
20+ Node <Integer > head1 = this .head1 ;
21+ Node <Integer > head2 = this .head2 ;
22+ Random random = new Random ();
23+ for (int i = 0 ; i < 600 ; i ++) {
24+ Node <Integer > next1 = new Node <Integer >(random .nextInt (9 ),null );
25+ head1 .setNext (next1 );
26+ head1 = next1 ;
27+ }
28+
29+ for (int i = 0 ; i < 700 ; i ++) {
30+ Node <Integer > next2 = new Node <Integer >(random .nextInt (9 ),null );
31+ head2 .setNext (next2 );
32+ head2 = next2 ;
33+ }
34+ }
35+
36+ @ Test
37+ public void test () {
38+ printNode (head1 );
39+ System .out .println ("+" );
40+ printNode (head2 );
41+ System .out .println ("=" );
42+ BigNumberAdd bigNumberAdd = new BigNumberAdd ();
43+ Node <Integer > node = bigNumberAdd .add (head1 , head2 );
44+ printNode (node );
45+ }
46+
47+
48+ private void printNode (Node <Integer > head ){
49+ System .out .print (head .getValue ());
50+ while (head .getNext () != null ){
51+ head = head .getNext ();
52+ System .out .print (head .getValue ());
53+ }
54+ System .out .println ();
55+ }
56+
57+
58+ }
Original file line number Diff line number Diff line change 1+ package general .node .other ;
2+
3+ public class DeleteNode {
4+
5+ }
Original file line number Diff line number Diff line change 1+ package general .node .other ;
2+
3+ import general .node .Node ;
4+
5+ /**
6+ * 有序链表合并
7+ * 链表为升序
8+ * @author javon
9+ *
10+ */
11+ public class MergeNodeList {
12+
13+ public <E > Node <E > merge (Node <E > head1 , Node <E > head2 ){
14+ if (head1 == null && head2 == null ){
15+ return null ;
16+ }else if (head1 == null ){
17+ return head2 ;
18+ }else if (head2 == null ){
19+ return head1 ;
20+ }else {
21+ return null ;
22+ }
23+
24+ }
25+
26+
27+ }
Original file line number Diff line number Diff line change 1+ package general .node .other ;
2+
3+ public class ReverseNodeList {
4+
5+ }
Original file line number Diff line number Diff line change 1+ package general .node .other ;
2+
3+ public class ReversePrint {
4+
5+ }
You can’t perform that action at this time.
0 commit comments