0% found this document useful (0 votes)
36 views9 pages

M.Farhan Khan Data Structure Assignment 1

This document defines a C++ program to implement operations on a singly linked list such as insertion, deletion, and traversal. It defines a Node class with data and pointer fields. A LinkedList class contains methods to create nodes, insert/delete nodes from different positions in the list, reverse the list, and display the list. The main function contains a menu of options to call these methods and test the linked list implementation.

Uploaded by

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

M.Farhan Khan Data Structure Assignment 1

This document defines a C++ program to implement operations on a singly linked list such as insertion, deletion, and traversal. It defines a Node class with data and pointer fields. A LinkedList class contains methods to create nodes, insert/delete nodes from different positions in the list, reverse the list, and display the list. The main function contains a menu of options to call these methods and test the linked list implementation.

Uploaded by

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

#include<iostream>

#include<cstdio>

#include<cstdlib>

using namespace std;

/** Node Declaration

*/

struct node {

int info;

struct node *next;

}*start;

/** Class Declaration

*/

class single_llist {

public:

node* create_node(int);

void insert_begin();

void insert_pos();

void insert_last();

void delete_pos();

void reverse();

void display();

single_llist() {

start= NULL;

};

/** Main :contains menu

*/

main() {

int choice, nodes, element, position, i;


single_llist sl;

start

= NULL;

while (1) {

cout<<endl<<" "<<endl;

cout<<endl<<"Operations on singly linked list"<<endl;

cout<<endl<<" "<<endl;

cout<<"1.Insert Node at beginning"<<endl;

cout<<"2.Insert node at last"<<endl;

cout<<"3.Insert node at position"<<endl;

cout<<"4.Delete a Particular Node"<<endl;

cout<<"5.Display Linked List"<<endl;

cout<<"6.Reverse Linked List "<<endl;

cout<<"7.Exit "<<endl;

cin>>choice;

switch(choice) {

case 1:

cout<<"Inserting Node at Beginning: "<<endl;

sl.insert_begin();

cout<<endl;

break;

case 2:

cout<<"Inserting Node at Last: "<<endl;

sl.insert_last();

cout<<endl;

break;

case 3:

cout<<"Inserting Node at a given position:"<<endl;

sl.insert_pos();
cout<<endl;

break;

case 4:

cout<<"Delete a particular node: "<<endl;

sl.delete_pos();

break;

case 5:

cout<<"Display elements of link list"<<endl;

sl.display();

cout<<endl;

break;

case 6:

cout<<"Reverse elements of Link List"<<endl;

sl.reverse();

cout<<endl;

break;

case 7:

cout<<"Exiting..."<<endl;

exit(1);

break;

default:

cout<<"Wrong choice"<<endl;

/** Creating Node

*/

node *single_llist::create_node(int value) {

struct node *temp, *s;


temp= new(struct node);

if (temp == NULL) {

cout<<"Memory not allocated "<<endl;

return 0;

else {

temp->info = value;

temp->next= NULL;

return temp;

/** Inserting element in beginning

*/

void single_llist::insert_begin() {

int value;

cout<<"Enter the value to be inserted: ";

cin>>value;

struct node *temp, *p;

temp= create_node(value);

if (start == NULL) {

start= temp;

start->next= NULL;

else {

p = start;

start= temp;

start->next= p;

cout<<"Element Inserted at beginning"<<endl;


}

/** Inserting Node at last

*/

void single_llist::insert_last() {

int value;

cout<<"Enter the value to be inserted: ";

cin>>value;

struct node *temp, *s;

temp= create_node(value);

s= start;

while (s->next != NULL)

s=s->next;

temp->next= NULL;

s->next = temp;

cout<<"Element Inserted at last"<<endl;

/** Insertion of node at

a given position

*/

void single_llist::insert_pos() {

int value, pos, counter

= 0;

cout<<"Enter the value to be inserted: ";

cin>>value;

struct node *temp, *s, *ptr;

temp

= create_node(value);
cout<<"Enter the postion at which node to be inserted: ";

cin>>pos;

int i; s = start;

while (s != NULL) { s = s->next;

counter++;

if (pos == 1) {

if (start == NULL) {

start= temp;

start->next= NULL;

else {

ptr = start;

start= temp;

start->next= ptr;

else if (pos >1 && pos <= counter)

s= start;

for (i = 1; i < pos; i++)

ptr= s;

s=s->next;

ptr->next= temp;

temp->next = s;

else {
cout<<"Positon out of range"<<endl;

/** Delete element at a given position

*/

void single_llist::delete_pos() {

int pos, i, counter= 0;

if (start == NULL) {

cout<<"List is empty"<<endl;

return;

cout<<"Enter the position of value to be deleted: ";

cin>>pos;

struct node *s, *ptr; s = start;

if (pos == 1) {

start = s->next;

else {

while (s != NULL) { s = s->next;

counter++;

if (pos >0 && pos <= counter)

s= start;

for (i = 1;i < pos;i++) {

ptr= s;

s=s->next;

}
ptr->next = s->next;

else {

cout<<"Position out of range"<<endl;

free(s);

cout<<"Element Deleted"<<endl;

/*

* Reverse Link List

*/

void single_llist::reverse()

struct node *ptr1, *ptr2, *ptr3;

if (start == NULL)

cout<<"List is empty"<<endl;

return;

if (start->next == NULL)

return;

ptr1 = start;

ptr2 = ptr1->next;

ptr3 = ptr2->next;

ptr1->next = NULL;
ptr2->next = ptr1;

while (ptr3 != NULL)

ptr1 = ptr2;

ptr2 = ptr3;

ptr3 = ptr3->next;

ptr2->next = ptr1;

start = ptr2;

/*

* Display Elements of a link list

*/

void single_llist::display() {

struct node *temp;

if (start == NULL) {

cout<<"The List is Empty"<<endl;

return;

temp= start;

cout<<"Elements of list are: "<<endl;

while (temp != NULL) {

cout<<temp->info<<"->";

temp= temp->next;

cout<<"NULL"<<endl;

You might also like