1+ public class LinkedListImp {
2+
3+ Node head ;
4+ private int size ;
5+
6+ LinkedListImp () {
7+ this .size = 0 ;
8+ }
9+
10+ class Node {
11+ int data ;
12+ Node next ;
13+
14+ // Constructor:
15+ Node (int data ) {
16+ this .data = data ;
17+ this .next = null ;
18+ size ++;
19+ }
20+ }
21+
22+ public void addFirst (int data ) {
23+ Node newNode = new Node (data );
24+
25+ if (head == null ) {
26+ head = newNode ;
27+ return ;
28+ }
29+
30+ newNode .next = head ;
31+ head = newNode ;
32+ }
33+
34+ public void addLast (int data ) {
35+ Node newNode = new Node (data );
36+
37+ if (head == null ) {
38+ head = newNode ;
39+ return ;
40+ }
41+
42+ Node currentNode = head ;
43+ while (currentNode .next != null ) {
44+ currentNode = currentNode .next ;
45+ }
46+ currentNode .next = newNode ;
47+ }
48+
49+ public void addAfter (int data , int position ) {
50+ Node newNode = new Node (data );
51+
52+ if (head == null ) {
53+ head = newNode ;
54+ return ;
55+ }
56+
57+ if (position > size ) {
58+ System .out .println ("List is smaller than specified position!" );
59+ return ;
60+ }
61+
62+ Node currentNode = head ;
63+ int currentPosition = 1 ;
64+
65+ while (currentPosition != position ) {
66+ currentNode = currentNode .next ;
67+ currentPosition ++;
68+ }
69+
70+ newNode .next = currentNode .next ;
71+ currentNode .next = newNode ;
72+ }
73+
74+ public void printList () {
75+ if (head == null ) {
76+ System .out .println ("The list is empty." );
77+ }
78+
79+ Node currentNode = head ;
80+
81+ while (currentNode != null ) {
82+ System .out .print (currentNode .data + " --> " );
83+ currentNode = currentNode .next ;
84+ }
85+ System .out .print ("NULL.\n " );
86+ }
87+
88+ public void delFirst () {
89+ if (head == null ) {
90+ System .out .println ("The list is empty." );
91+ return ;
92+ }
93+ size --;
94+
95+ Node deletedNode = head ;
96+ head = head .next ;
97+
98+ System .out .println ("Deleted: " + deletedNode .data );
99+ }
100+
101+ public void delLast () {
102+ if (head == null ) {
103+ System .out .println ("The list is empty." );
104+ return ;
105+ }
106+ size --;
107+
108+ if (head .next == null ) {
109+ head = null ;
110+ return ;
111+ }
112+
113+ Node deletedNode = head ;
114+ Node currentNode = head .next ;
115+
116+ while (currentNode .next != null ) {
117+ currentNode = currentNode .next ;
118+ deletedNode = deletedNode .next ;
119+ }
120+
121+ System .out .println ("Deleted: " + deletedNode .next .data );
122+ deletedNode .next = null ;
123+ }
124+
125+ public void deleteAfter (int position ) {
126+ if (head == null ) {
127+ System .out .println ("The list is empty." );
128+ return ;
129+ }
130+ size --;
131+
132+ if (position > size ) {
133+ System .out .println ("List is smaller than specified position!" );
134+ return ;
135+ }
136+
137+ Node currentNode = head ;
138+ int currentPosition = 1 ;
139+
140+ while (currentPosition < position -1 ) {
141+ currentNode = currentNode .next ;
142+ currentPosition ++;
143+ }
144+ Node deletedNode = currentNode .next ;
145+ currentNode .next = deletedNode .next ;
146+
147+ System .out .println ("Deleted: " + deletedNode .data );
148+
149+ }
150+
151+ public int getSize () {
152+ return size ;
153+ }
154+
155+ public static void main (String [] args ) {
156+ LinkedListImp ll = new LinkedListImp ();
157+
158+ ll .addFirst (10 );
159+ ll .addFirst (20 );
160+ ll .addFirst (30 );
161+ ll .addLast (40 );
162+ ll .addLast (50 );
163+ ll .addFirst (11 );
164+ ll .addLast (60 );
165+
166+ ll .printList ();
167+ System .out .println (ll .getSize ());
168+
169+ ll .addAfter (65 , 2 );
170+
171+ ll .printList ();
172+ System .out .println (ll .getSize ());
173+
174+ ll .deleteAfter (3 );
175+ ll .printList ();
176+ System .out .println (ll .getSize ());
177+ }
178+ }
0 commit comments