0% found this document useful (0 votes)
73 views46 pages

Lecture No.03 Data Structures: Dr. Sohail Aslam

The document discusses linked lists and provides C++ code to implement a linked list data structure. It defines a Node class to represent individual nodes in the linked list, with fields to store data and a pointer to the next node. It also defines a List class to manage the head node, current node, and size of the entire linked list. Methods like add() are provided to insert new nodes into the list.

Uploaded by

ism33
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
Download as ppt, pdf, or txt
0% found this document useful (0 votes)
73 views46 pages

Lecture No.03 Data Structures: Dr. Sohail Aslam

The document discusses linked lists and provides C++ code to implement a linked list data structure. It defines a Node class to represent individual nodes in the linked list, with fields to store data and a pointer to the next node. It also defines a List class to manage the head node, current node, and size of the entire linked list. Methods like add() are provided to insert new nodes into the list.

Uploaded by

ism33
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1/ 46

Lecture No.

03
Data Structures
Dr. Sohail Aslam

Linked List

Actual picture in memory:


current

head
2

1051

1052

1063

1053

1063

1054

1055

1051

1056

current

1057

1058

1060

1059

head

1060

1061

1062

1054

1063

1064

1057

1065

Linked List Operations

add(9): Create a new node in memory to hold 9


Node* newNode = new Node(9);

newNode

Linked List Operations

add(9): Create a new node in memory to hold 9


Node* newNode = new Node(9);

newNode

Link the new node into the list


head
2

current

7
2

newNode

size=5 6

C++ Code for Linked List


The Node class
class Node {
public:
int get() { return object; };
void set(int object) { this->object = object; };
Node *getNext() { return nextNode; };
void setNext(Node *nextNode)
{ this->nextNode = nextNode; };
private:
int object;
Node *nextNode;
};

C++ Code for Linked List


The Node class

class Node {
public:
int get() { return object; };
void set(int object) { this->object = object; };
Node *getNext() { return nextNode; };
void setNext(Node *nextNode)
{ this->nextNode = nextNode; };
private:
int object;
Node *nextNode;
};

C++ Code for Linked List


The Node class

class Node {
public:
int get() { return object; };
void set(int object) { this->object = object; };
Node *getNext() { return nextNode; };
void setNext(Node *nextNode)
{ this->nextNode = nextNode; };
private:
int object;
Node *nextNode;
};

C++ Code for Linked List


The Node class

class Node {
public:
int get() { return object; };
void set(int object) { this->object = object; };
Node *getNext() { return nextNode; };
void setNext(Node *nextNode)
{ this->nextNode = nextNode; };
private:
int object;
Node *nextNode;
};

C++ Code for Linked List


The Node class

class Node {
public:
int get() { return object; };
void set(int object) { this->object = object; };
Node *getNext() { return nextNode; };
void setNext(Node *nextNode)
{ this->nextNode = nextNode; };
private:
int object;
Node *nextNode;
};

C++ Code for Linked List


The Node class
class Node {
public:
int get() { return object; };
void set(int object) { this->object = object; };

Node *getNext() { return nextNode; };


void setNext(Node *nextNode)
{ this->nextNode = nextNode; };
private:
int object;
Node *nextNode;
};

C++ Code for Linked List


The Node class
class Node {
public:
int get() { return object; };
void set(int object) { this->object = object; };

Node *getNext() { return nextNode; };


void setNext(Node *nextNode)
{ this->nextNode = nextNode; };
private:
int object;
Node *nextNode;
};

C++ Code for Linked List


The Node class
class Node {
public:
int get() { return object; };
void set(int object) { this->object = object; };

Node *getNext() { return nextNode; };


void setNext(Node *nextNode)
{ this->nextNode = nextNode; };
private:
int object;
Node *nextNode;
};

C++ Code for Linked List


The Node class
class Node {
public:
int get() { return object; };
void set(int object) { this->object = object; };

Node *getNext() { return nextNode; };


void setNext(Node *nextNode)
{ this->nextNode = nextNode; };
private:
int object;
Node *nextNode;
};

C++ Code for Linked List


The Node class
class Node {
public:
int get() { return object; };
void set(int object) { this->object = object; };

Node *getNext() { return nextNode; };


void setNext(Node *nextNode)
{ this->nextNode = nextNode; };
private:
int object;
Node *nextNode;
};

C++ Code for Linked List


#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// Constructor
List() {
headNode = new Node();
headNode->setNext(NULL);
currentNode = NULL;
size = 0;
};

C++ Code for Linked List

#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// Constructor
List() {
headNode = new Node();
headNode->setNext(NULL);
currentNode = NULL;
size = 0;
};

C++ Code for Linked List


#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// Constructor
List() {
headNode = new Node();
headNode->setNext(NULL);
currentNode = NULL;
size = 0;
};

C++ Code for Linked List


#include <stdlib.h>
#include "Node.cpp"

class List {
public:
// Constructor
List() {
headNode = new Node();
headNode->setNext(NULL);
currentNode = NULL;
size = 0;
};

C++ Code for Linked List


#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// Constructor
List() {
headNode = new Node();
headNode->setNext(NULL);
currentNode = NULL;
size = 0;
};

C++ Code for Linked List


#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// Constructor

List() {
headNode = new Node();
headNode->setNext(NULL);
currentNode = NULL;
size = 0;
};

C++ Code for Linked List


#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// Constructor
List() {

headNode = new Node();


headNode->setNext(NULL);
currentNode = NULL;
size = 0;
};

C++ Code for Linked List


#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// Constructor
List() {
headNode = new Node();

headNode->setNext(NULL);
currentNode = NULL;
size = 0;
};

C++ Code for Linked List


#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// Constructor
List() {
headNode = new Node();
headNode->setNext(NULL);

currentNode = NULL;
size = 0;
};

C++ Code for Linked List


#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// Constructor
List() {
headNode = new Node();
headNode->setNext(NULL);
currentNode = NULL;

size = 0;
};

C++ Code for Linked List


void add(int addObject) {
Node* newNode = new Node();
newNode->set(addObject);
if( currentNode != NULL ){
newNode->setNext(currentNode->getNext());
currentNode->setNext( newNode );
lastCurrentNode = currentNode;
currentNode = newNode;
}
else {
newNode->setNext(NULL);
headNode->setNext(newNode);
lastCurrentNode = headNode;
currentNode = newNode;
}
size++;
};

C++ Code for Linked List

void add(int addObject) {


Node* newNode = new Node();
newNode->set(addObject);
if( currentNode != NULL ){
newNode->setNext(currentNode->getNext());
currentNode->setNext( newNode );
lastCurrentNode = currentNode;
currentNode = newNode;
}
else {
newNode->setNext(NULL);
headNode->setNext(newNode);
lastCurrentNode = headNode;
currentNode = newNode;
}
size++;
};

C++ Code for Linked List

void add(int addObject) {


Node* newNode = new Node();
newNode->set(addObject);
if( currentNode != NULL ){
newNode->setNext(currentNode->getNext());
currentNode->setNext( newNode );
lastCurrentNode = currentNode;
currentNode = newNode;
}
else {
newNode->setNext(NULL);
headNode->setNext(newNode);
lastCurrentNode = headNode;
currentNode = newNode;
}
size++;
};

C++ Code for Linked List

void add(int addObject) {


Node* newNode = new Node();
newNode->set(addObject);
if( currentNode != NULL ){
newNode->setNext(currentNode->getNext());
currentNode->setNext( newNode );
lastCurrentNode = currentNode;
currentNode = newNode;
}
else {
newNode->setNext(NULL);
headNode->setNext(newNode);
lastCurrentNode = headNode;
currentNode = newNode;
}
size++;
};

C++ Code for Linked List

void add(int addObject) {


Node* newNode = new Node();
newNode->set(addObject);
if( currentNode != NULL ){
newNode->setNext(currentNode->getNext());
currentNode->setNext( newNode );
lastCurrentNode = currentNode;
currentNode = newNode;
}
else {
newNode->setNext(NULL);
headNode->setNext(newNode);
lastCurrentNode = headNode;
currentNode = newNode;
}
size++;
};

C++ Code for Linked List

void add(int addObject) {


Node* newNode = new Node();
newNode->set(addObject);
if( currentNode != NULL ){
newNode->setNext(currentNode->getNext());
currentNode->setNext( newNode );
lastCurrentNode = currentNode;
currentNode = newNode;
}
else {
newNode->setNext(NULL);
headNode->setNext(newNode);
lastCurrentNode = headNode;
currentNode = newNode;
}
size++;
};

C++ Code for Linked List

void add(int addObject) {


Node* newNode = new Node();
newNode->set(addObject);
if( currentNode != NULL ){
newNode->setNext(currentNode->getNext());
currentNode->setNext( newNode );
lastCurrentNode = currentNode;
currentNode = newNode;
}
else {
newNode->setNext(NULL);
headNode->setNext(newNode);
lastCurrentNode = headNode;
currentNode = newNode;
}
size++;
};

C++ Code for Linked List

void add(int addObject) {


Node* newNode = new Node();
newNode->set(addObject);
if( currentNode != NULL ){
newNode->setNext(currentNode->getNext());
currentNode->setNext( newNode );
lastCurrentNode = currentNode;
currentNode = newNode;
}
else {
newNode->setNext(NULL);
headNode->setNext(newNode);
lastCurrentNode = headNode;
currentNode = newNode;
}
size++;
};

C++ Code for Linked List

void add(int addObject) {


Node* newNode = new Node();
newNode->set(addObject);
if( currentNode != NULL ){
newNode->setNext(currentNode->getNext());
currentNode->setNext( newNode );
lastCurrentNode = currentNode;
currentNode = newNode;
}
else {
newNode->setNext(NULL);
headNode->setNext(newNode);
lastCurrentNode = headNode;
currentNode = newNode;
}
size++;
};

C++ Code for Linked List

void add(int addObject) {


Node* newNode = new Node();
newNode->set(addObject);
if( currentNode != NULL ){
newNode->setNext(currentNode->getNext());
currentNode->setNext( newNode );
lastCurrentNode = currentNode;
currentNode = newNode;
}
else {
newNode->setNext(NULL);
headNode->setNext(newNode);
lastCurrentNode = headNode;
currentNode = newNode;
}
size++;
};

C++ Code for Linked List

void add(int addObject) {


Node* newNode = new Node();
newNode->set(addObject);
if( currentNode != NULL ){
newNode->setNext(currentNode->getNext());
currentNode->setNext( newNode );
lastCurrentNode = currentNode;
currentNode = newNode;
}
else {
newNode->setNext(NULL);
headNode->setNext(newNode);
lastCurrentNode = headNode;
currentNode = newNode;
}
size++;
};

C++ Code for Linked List

void add(int addObject) {


Node* newNode = new Node();
newNode->set(addObject);
if( currentNode != NULL ){
newNode->setNext(currentNode->getNext());
currentNode->setNext( newNode );
lastCurrentNode = currentNode;
currentNode = newNode;
}
else {
newNode->setNext(NULL);
headNode->setNext(newNode);
lastCurrentNode = headNode;
currentNode = newNode;
}
size++;
};

C++ Code for Linked List

void add(int addObject) {


Node* newNode = new Node();
newNode->set(addObject);
if( currentNode != NULL ){
newNode->setNext(currentNode->getNext());
currentNode->setNext( newNode );
lastCurrentNode = currentNode;
currentNode = newNode;
}
else {
newNode->setNext(NULL);
headNode->setNext(newNode);
lastCurrentNode = headNode;
currentNode = newNode;
}
size++;
};

C++ Code for Linked List

void add(int addObject) {


Node* newNode = new Node();
newNode->set(addObject);
if( currentNode != NULL ){
newNode->setNext(currentNode->getNext());
currentNode->setNext( newNode );
lastCurrentNode = currentNode;
currentNode = newNode;
}
else {
newNode->setNext(NULL);
headNode->setNext(newNode);
lastCurrentNode = headNode;
currentNode = newNode;
}
size++;
};

C++ Code for Linked List

void add(int addObject) {


Node* newNode = new Node();
newNode->set(addObject);
if( currentNode != NULL ){
newNode->setNext(currentNode->getNext());
currentNode->setNext( newNode );
lastCurrentNode = currentNode;
currentNode = newNode;
}
else {
newNode->setNext(NULL);
headNode->setNext(newNode);
lastCurrentNode = headNode;
currentNode = newNode;
}
size++;
};

C++ Code for Linked List

void add(int addObject) {


Node* newNode = new Node();
newNode->set(addObject);
if( currentNode != NULL ){
newNode->setNext(currentNode->getNext());
currentNode->setNext( newNode );
lastCurrentNode = currentNode;
currentNode = newNode;
}
else {
newNode->setNext(NULL);
headNode->setNext(newNode);
lastCurrentNode = headNode;
currentNode = newNode;
}
size++;
};

Building a Linked List


List list;

headNode

size=0

Building a Linked List


List list;

headNode

size=0
currentNode

list.add(2);

headNode
lastcurrentNode

size=1

Building a Linked List


List list;

headNode

size=0
currentNode

list.add(2);

headNode

size=1

lastcurrentNode
currentNode

list.add(6);

headNode

lastcurrentNode

size=2

Building a Linked List


List.add(8); list.add(7); list.add(1);
currentNode
headNode

lastcurrentNode

size=5

C++ Code for Linked List


int get() {
if (currentNode != NULL)
return currentNode->get();
};

C++ Code for Linked List


bool next() {
if (currentNode == NULL) return false;
lastCurrentNode = currentNode;
currentNode = currentNode->getNext();
if (currentNode == NULL || size == 0)
return false;
else
return true;
};

You might also like