-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreverse node.txt
More file actions
135 lines (121 loc) · 2.5 KB
/
reverse node.txt
File metadata and controls
135 lines (121 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
import java.util.*;
import java.lang.*;
import java.io.*;
public class Main
{
static node head;
static node tail;
public static void addlast(int data)
{
node nn=new node(data);
if(head==null){
head=nn;
tail=nn;}
else{
tail.next=nn;
tail=nn;}
}
public static int length()
{
int count=0;
node curr=head;
while(curr!=null)
{
count=count+1;
curr=curr.next;
}
return count;
}
public static void Disply()
{
if(head==null)
return;
node curr=head;
while(curr!=null)
{
System.out.print(curr.data+" ");
curr=curr.next;
}
System.out.println();
}
public static node getAt(node head,int idx)
{
if(idx<0||idx>length()-1)
return null;
node curr=head;
for(int i=0;i<idx;i++)
{
curr=curr.next;
}
return curr;
}
public static node seconMidleIs(node head)
{
if(head==null||head.next==null)
return head;
node slow=head;
node first=head;
while(first!=null&&first.next!=null)
{
slow=slow.next;
first=first.next.next;
}
return slow;
}
public static node firstMidleIs(node head)
{
if(head==null||head.next==null)
return head;
node slow=head;
node first=head;
while(first.next!=null&&first.next.next!=null)
{
slow=slow.next;
first=first.next.next;
}
return slow;
}
public static node DeleteMidleNode(node head)
{
if(head==null)
{
return null;}
if(head.next==null){
head.data=-1;
return head;}
int l=length();
l=l/2;
node curr=head;
while(l>1)
{
curr=curr.next;
l--;
}
curr.next=curr.next.next;
return head;
}
public static void main(String[] args) {
tail=null;
head=null;
Scanner sc=new Scanner(System.in);
int testcase=sc.nextInt();
for(int j=0;j<testcase;j++){
int n=sc.nextInt();
for(int i=0;i<n;i++)
{
int m=sc.nextInt();
addlast(m);
}
DeleteMidleNode(head);
Disply();
}
}}
class node
{
node next;
int data;
public node(int data){
this.data=data;
this.next=null;
}
}