Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Program to find the middle node in the Linked List in a single traversal
- import java.io.*;
- import java.util.Scanner;
- /**
- * Created by MOHIT on 25-07-2016.
- */
- class ListElement{
- public int data;
- public ListElement link;
- public ListElement list1,list2;
- Scanner sc = new Scanner(System.in);
- //construtor
- ListElement(int data){
- this.data = data;
- this.link = null;
- }
- //method to update data in List element
- void updatedata(int data){
- this.data = data;
- }
- //method to setup the Link
- void setLink(ListElement node){
- this.link = node;
- }
- int getdata(){
- return this.data;
- }
- ListElement getNextNode(){
- return this.link;
- }
- //method that returns length of list
- int length(){
- ListElement node = this;
- int length_of_list = 1;
- if(node == null){
- return 0;
- }
- while(node.link != null){
- length_of_list++;
- node = node.getNextNode();
- }
- return length_of_list;
- }
- ListElement insert(ListElement head,ListElement node,int position){
- ListElement previousNode = new ListElement(head.data);
- previousNode.setLink(head.link);
- if(head == null){
- return node;
- }
- else{
- int size = length();
- if(position > size+1){
- System.out.println("Invalid position.");
- System.out.println("Valid positions are from 0 to " + size);
- return head;
- }
- if(position == 1){
- node.setLink(head);
- return node;
- }
- else if(position == 2){
- ListElement temp = new ListElement(-11);
- temp.setLink(head.link);
- head.setLink(node);
- node.setLink(temp.getNextNode());
- }
- else{
- int pos = 1;
- while(pos != position-1){
- previousNode = previousNode.getNextNode();
- pos++;
- }
- //ListElement temp = head.getNextNode();
- previousNode.setLink(node);
- node.setLink(null);
- }
- }
- return head;
- }
- ListElement insertAtEnd(ListElement node){
- ListElement head = this;
- int size = head.length();
- ListElement temp = this;
- while(temp.link!=null){
- temp = temp.getNextNode();
- }
- temp.setLink(node);
- return head;
- }
- void display(ListElement head){
- ListElement node = head;
- int position = 1;
- while(node!= null){
- System.out.println("Position " + position + " = " + node.data);
- position++;
- node = node.getNextNode();
- }
- }
- int middleNode(){
- ListElement Node = this;
- ListElement fast = this;
- ListElement slow = this;
- while (true){
- if(fast.getNextNode() != null){
- fast = fast.getNextNode();
- slow = slow.getNextNode();
- }else{
- break;
- }
- if(fast.getNextNode() != null){
- fast = fast.getNextNode();
- }else{
- break;
- }
- }
- return slow.getdata();
- }
- ListElement makeDummyList() {
- ListElement head = this;
- for(int i=2 ; i < 10 ; i++){
- ListElement node = new ListElement(i);
- head.insert(head,node,i);
- }
- return head;
- }
- }
- public class middleLL {
- public static void main(String args[]){
- Scanner sc = new Scanner(System.in);
- ListElement head = new ListElement(1);
- head.setLink(null);
- head = head.makeDummyList();
- System.out.println("The Elements of the Linked List");
- head.display(head);
- System.out.println("The Middle Element of the linked list is : " + head.middleNode());
- }
- }
Add Comment
Please, Sign In to add comment