0% found this document useful (0 votes)
104 views

Data Structure Lab Final

The document contains code for two programs that implement singly linked lists in Java. Program 1 demonstrates basic linked list operations like insertion and removal from the front of the list. Program 2 implements a more complete linked list class with methods for adding nodes to the front and end, traversing the list, retrieving a node by index, and getting the size of the list. Both programs include a main method to test the linked list functionality.

Uploaded by

Its Anila
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
104 views

Data Structure Lab Final

The document contains code for two programs that implement singly linked lists in Java. Program 1 demonstrates basic linked list operations like insertion and removal from the front of the list. Program 2 implements a more complete linked list class with methods for adding nodes to the front and end, traversing the list, retrieving a node by index, and getting the size of the list. Both programs include a main method to test the linked list functionality.

Uploaded by

Its Anila
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 11

LAB FINAL

Name: Muhammad Umer Farooq malik

Reg-No:SP19-BCS-036
Section: 4B
Singly Linked List
Program 1:
public class LinkedListProgram1<T> {

private LinkedListNode<T> first = null;

//Insert at the front of the list

public void insert(LinkedListNode<T> node) {

node.setNext(first);

first = node;

//Remove from the front of the list

public void remove(){

if(first.getNext()!=null)

first = first.getNext();

else first = null;

//Recursively traverse this list and print the node value

private void printList(LinkedListNode<T> node) {

System.out.println("Node is " + node.getValue());

if(node.getNext()!=null) printList(node.getNext());

public void print(){

printList(first);

}
public static void main(String[] args) {

LinkedList<String> list = new LinkedList<String>();

list.insert(new LinkedListNode<String>("Manish"));

list.insert(new LinkedListNode<String>("Pandit"));

list.insert(new LinkedListNode<String>("Tanvi"));

list.insert(new LinkedListNode<String>("Monika"));

list.print();

list.remove();

System.out.println("After removing the head..");

list.print();

class LinkedListNode<T> {

private T value;

private LinkedListNode<T> next;

public LinkedListNode(T value) {

this.value = value;

public void setNext(LinkedListNode<T> next) {

this.next = next;

}
public LinkedListNode<T> getNext() {

return next;

public T getValue() {

return value;

Program 2:
public class SinglyLinkedListProgram2 {

private ObjectNode head_ptr;

private ObjectNode tail_ptr;

private ObjectNode iter;

private int countNodes;

public static void main(String[] args) {

SinglyLinkedList s = new SinglyLinkedList();

s.addAtFrontNode("c");

s.addAtEndNode("x");

s.addAtFrontNode("b");

s.addAtEndNode("y");
s.addAtFrontNode("a");

s.addAtEndNode("z");

s.reset();

System.out.println("The String is: ");

while (s.hasNext()) {

System.out.print(s.next());

System.out.println();

System.out.println("Number of nodes is: ");

System.out.println(s.countNodes());

System.out.println("The object at position 3 (String starts from position 0: ");

Object check = s.getObjectAt(3);

System.out.println(check.toString());

/* Constructor Method to initialise the list

* Big-theta value =(1),where n=length of the list

*/

public SinglyLinkedList() {

head_ptr = null;

tail_ptr = null;
countNodes = 0;

iter = null;

/* Method to add a node at the tail of the list

* Big-theta value =(1),where n=length of the list

*/

public void addAtEndNode(Object data) {

ObjectNode head = new ObjectNode(data, null);

countNodes++;

if (head_ptr == null) {

head_ptr = head;

tail_ptr = head_ptr;

else {

tail_ptr.setLink(head);

tail_ptr = head;

/* Method to add a node at the front of the list

* Big-theta value =(1),where n=length of the list


*/

public void addAtFrontNode(Object data) {

ObjectNode head = new ObjectNode(data, null);

countNodes++;

if (head_ptr == null) {

head_ptr = head;

tail_ptr = head_ptr;

} else {

head.setLink(head_ptr);

head_ptr = head;

/* Overridden Method toString to display the list

* Big-theta value =(n),where n=length of the list

*/

public String toString() {

ObjectNode cursor = head_ptr;

String display = "";

for (cursor = head_ptr.link; cursor != null; cursor = cursor.link) {

display = cursor.data.toString();

System.out.print(display);
}

return display;

/* Method to get the object at a particular position of the node

* Big-theta value =(n),where n=position

*/

public Object getObjectAt(int i) {

ObjectNode o = null;

int count = 0;

if (i < countNodes()) {

o = head_ptr;

if (i == 0) {

return o.getData();

} else {

while (count != i) {

o = o.link;

count++;

return o.getData();
}

/* Method to set the iterator at the head pointer of the list

* Big-theta value =(1)

*/

public void reset() {

iter = head_ptr;

/* Returns the boolean value based on whether the next node exists

* Big-theta value =(n)

*/

public boolean hasNext() {

boolean b = iter != null;

return b;

/*

* Method to return the Object of the next node

*/

public Object next() {

Object nextNodeData;
if (iter == null)

iter = head_ptr;

nextNodeData = iter.data;

iter = iter.link;

return nextNodeData;

/*

* Method that returns the size of the list

*/

public int countNodes() {

return countNodes;

/*

* Method that returns the last node of the list

*/

public ObjectNode getLast() {

return tail_ptr;

You might also like