Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added program to implement custom linked list #185

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
public class Main {
public static void main(String[] args) {
circularLinkedList list = new circularLinkedList();
/**adds 10 random number in linkedlist */
for(int i=0;i<10;i++){
int number = (int)(Math.random()*10);
list.add(number);
}
System.out.println("linkedlist:");
list.print();
System.out.println("size of linkedlist: "+list.size());
System.out.println("\n");
list.delete(1);
list.delete(0);
System.out.println("1. element is : "+list.getElement(1));
System.out.println("head of linkedlist is: "+list.getElement(0));
}
}
public class Main {

public static void main(String[] args) {
circularLinkedList list = new circularLinkedList();

/**adds 10 random number in linkedlist */
for(int i=0;i<10;i++){
int number = (int)(Math.random()*10);
list.add(number);
}
System.out.println("linkedlist:");
list.print();
System.out.println("size of linkedlist: "+list.size());
System.out.println("\n");

list.delete(1);
list.delete(0);

System.out.println("1. element is : "+list.getElement(1));
System.out.println("head of linkedlist is: "+list.getElement(0));

}

}
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
public class Node {
int data;
Node next;
public Node(int a) {
data=a;
next=null;
}
public Node() {
data=-1;
next=null;
}
public int getNodeElement(){
return data;
}
}
public class Node {
int data;
Node next;

public Node(int a) {
data=a;
next=null;

}

public Node() {
data=-1;
next=null;
}

public int getNodeElement(){
return data;
}
}
Original file line number Diff line number Diff line change
@@ -1,112 +1,112 @@
public class circularLinkedList {
Node head;
int size;
public circularLinkedList() {
head=new Node();
head.next=head;
size=0;
head.data=-1;
}
/**
* adds a new element end of the linkedlist
* @param num
*/
public void add(int num) {
Node newNode=new Node(num);
Node currNode=head;
if(size==0)
{
head.data=num;
}
else {
while(!currNode.next.equals(head))
{
currNode=currNode.next;
}
newNode.next=currNode.next;
currNode.next=newNode;
}
size++;
}
/**
* deletes index
* index 0 is equal to head of linkedlist
* @param index
*/
public void delete(int index) {
Node currNode=head;
Node currNodePrev=head;
if(size==0)
System.out.println("Linkedlist is empty");
if(index>=size)
System.out.println("index of deletion is larger then size of linkedlist");
else{
if(index==0){
while(!currNode.next.equals(head)){
currNode=currNode.next;
}
currNode.next=head.next;
head=head.next;
}else{
for(int i=0;i<index;i++){
currNodePrev=currNode;
currNode=currNode.next;
}
currNodePrev.next=currNode.next;
currNode=null;
}
}
System.out.println("after deletion of "+index+". element :");
print();
}
/**
* prints linkedlist
*
*/
public void print() {
System.out.print(head.data+" ");
Node currNode=head.next;
while(!currNode.equals(head)) {
System.out.print(currNode.data+" ");
currNode=currNode.next;
}
System.out.println();
}
/**
* returns size of linked list
* @return integer size
*/
public int size(){
return size;
}
/**
* returns element of given index
* 0 is denotes head node
* @param index
* @return
*/
public int getElement(int index){
Node currNode=head;
for(int i=0;i<index;i++){
currNode=currNode.next;
}
return currNode.getNodeElement();
}
}
public class circularLinkedList {
Node head;
int size;

public circularLinkedList() {
head=new Node();
head.next=head;
size=0;
head.data=-1;
}
/**
* adds a new element end of the linkedlist
* @param num
*/
public void add(int num) {

Node newNode=new Node(num);
Node currNode=head;

if(size==0)
{
head.data=num;
}
else {
while(!currNode.next.equals(head))
{
currNode=currNode.next;

}
newNode.next=currNode.next;
currNode.next=newNode;
}
size++;

}

/**
* deletes index
* index 0 is equal to head of linkedlist
* @param index
*/
public void delete(int index) {

Node currNode=head;
Node currNodePrev=head;

if(size==0)
System.out.println("Linkedlist is empty");
if(index>=size)
System.out.println("index of deletion is larger then size of linkedlist");
else{
if(index==0){
while(!currNode.next.equals(head)){
currNode=currNode.next;
}
currNode.next=head.next;
head=head.next;
}else{
for(int i=0;i<index;i++){
currNodePrev=currNode;
currNode=currNode.next;
}
currNodePrev.next=currNode.next;
currNode=null;
}
}
System.out.println("after deletion of "+index+". element :");
print();
}
/**
* prints linkedlist
*
*/
public void print() {
System.out.print(head.data+" ");
Node currNode=head.next;

while(!currNode.equals(head)) {
System.out.print(currNode.data+" ");
currNode=currNode.next;
}
System.out.println();


}
/**
* returns size of linked list
* @return integer size
*/
public int size(){
return size;
}

/**
* returns element of given index
* 0 is denotes head node
* @param index
* @return
*/
public int getElement(int index){
Node currNode=head;
for(int i=0;i<index;i++){
currNode=currNode.next;
}
return currNode.getNodeElement();
}


}



86 changes: 86 additions & 0 deletions Programs/LinkedList/CustomLinkedList.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package Programs.LinkedList;

/* Program to implement simple int linked list from scratch */
public class CustomLinkedList {
private Node Head;
private Node Tail;

private int size;
public CustomLinkedList() {
this.size = 0;
}

// Node class with private instance variables and constructors

class Node {
private int value;
private Node next;

public Node(int value) {
this.value = value;
}
public Node(int value, Node next) {
this.value = value;
this.next = next;
}

}

// insert method which takes the new value as parameter and inserts at the beginning

void insertFirst(int val) {
Node node = new Node(val);
node.next = Head;
Head = node;
if(Tail == null) {
Tail = Head;
}
size++;
}

// traverse method to print all the elements present

public void traverse() {

Node temp = Head;
while(temp != null) {
System.out.print(temp.value + "-> ");
temp = temp.next;
}
System.out.println("END");
}

// insertLast method to insert element at the end of the list

public void insertLast(int val) {
if(Tail == null) {
insertFirst(val);
return;
}
Node node = new Node(val);
Tail.next = node;
Tail = node;
size++;
}

// method to insert the given value at a given index

public void insertAtIndex(int val, int index) {
if(index == 0) {
insertFirst(val);
return;
}
if(index == size) {
insertLast(val);
return;
}
Node temp = Head;
for(int i = 1; i < index && index < size; i++) {
temp = temp.next;
}
Node node = new Node(val, temp.next);
temp.next = node;
size++;

}
}
Loading