![Page 1: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/1.jpg)
19-Sep-18
1
Lecture No.03
Data Structures
Linked List
Actual picture in memory:
1051
1052
1055
1059
1060
1061
1062
1063
1064
1056
1057
1058
1053
1054 2
6
8
7
1
1051
1063
1057
1060
0
head 1054
1063current
2 6 8 7 1
head
current
1065
![Page 2: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/2.jpg)
19-Sep-18
2
Linked List Operations
add(9): Create a new node in memory to hold ‘9’
Node* newNode = new Node(9);9newNod
e
Linked List Operations
add(9): Create a new node in memory to hold ‘9’
Node* newNode = new Node(9);
Link the new node into the list
9newNode
2 6 8 7 1
head
current
size=5 6
9
newNode
1
3
2
![Page 3: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/3.jpg)
19-Sep-18
3
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;
};
![Page 4: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/4.jpg)
19-Sep-18
4
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;
};
![Page 5: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/5.jpg)
19-Sep-18
5
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;
};
![Page 6: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/6.jpg)
19-Sep-18
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;
};
![Page 7: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/7.jpg)
19-Sep-18
7
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;
};
![Page 8: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/8.jpg)
19-Sep-18
8
C++ Code for Linked List
#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// ConstructorList() {
headNode = new Node();
headNode->setNext(NULL);currentNode = NULL;
size = 0;
};
C++ Code for Linked List
#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// ConstructorList() {
headNode = new Node();
headNode->setNext(NULL);currentNode = NULL;
size = 0;
};
![Page 9: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/9.jpg)
19-Sep-18
9
C++ Code for Linked List
#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// ConstructorList() {
headNode = new Node();
headNode->setNext(NULL);currentNode = NULL;
size = 0;
};
C++ Code for Linked List
#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// ConstructorList() {
headNode = new Node();
headNode->setNext(NULL);currentNode = NULL;
size = 0;
};
![Page 10: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/10.jpg)
19-Sep-18
10
C++ Code for Linked List
#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// ConstructorList() {
headNode = new Node();
headNode->setNext(NULL);currentNode = NULL;
size = 0;
};
C++ Code for Linked List
#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// ConstructorList() {
headNode = new Node();
headNode->setNext(NULL);currentNode = NULL;
size = 0;
};
![Page 11: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/11.jpg)
19-Sep-18
11
C++ Code for Linked List
#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// ConstructorList() {
headNode = new Node();
headNode->setNext(NULL);currentNode = NULL;
size = 0;
};
C++ Code for Linked List
#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// ConstructorList() {
headNode = new Node();
headNode->setNext(NULL);currentNode = NULL;
size = 0;
};
![Page 12: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/12.jpg)
19-Sep-18
12
C++ Code for Linked List
#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// ConstructorList() {
headNode = new Node();
headNode->setNext(NULL);currentNode = NULL;
size = 0;
};
C++ Code for Linked List
#include <stdlib.h>
#include "Node.cpp"
class List {
public:
// ConstructorList() {
headNode = new Node();
headNode->setNext(NULL);currentNode = NULL;
size = 0;
};
![Page 13: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/13.jpg)
19-Sep-18
13
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++;
};
![Page 14: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/14.jpg)
19-Sep-18
14
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++;
};
![Page 15: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/15.jpg)
19-Sep-18
15
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++;
};
![Page 16: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/16.jpg)
19-Sep-18
16
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++;
};
![Page 17: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/17.jpg)
19-Sep-18
17
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++;
};
![Page 18: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/18.jpg)
19-Sep-18
18
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++;
};
![Page 19: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/19.jpg)
19-Sep-18
19
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++;
};
![Page 20: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/20.jpg)
19-Sep-18
20
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++;
};
![Page 21: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/21.jpg)
19-Sep-18
21
Building a Linked List
headNode size=0List list;
Building a Linked List
headNode
2headNode
currentNode
size=1
lastcurrentNode
size=0List list;
list.add(2);
![Page 22: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/22.jpg)
19-Sep-18
22
Building a Linked List
headNode
2headNode
currentNode
size=1
lastcurrentNode
2 6headNode
currentNode
size=2
lastcurrentNode
size=0List list;
list.add(2);
list.add(6);
Building a Linked List
List.add(8); list.add(7); list.add(1);
2 6 7 1headNode
currentNode
size=5
lastcurrentNode
8
![Page 23: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/23.jpg)
19-Sep-18
23
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;
};
![Page 24: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/24.jpg)
19-Sep-18
24
Analysis of Linked List
add• we simply insert the new node after the current
node. So add is a one-step operation.
remove remove is also a one-step operation
Analysis of Linked List
add• we simply insert the new node after the current
node. So add is a one-step operation.
remove remove is also a one-step operation
find worst-case: may have to search the entire list
![Page 25: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/25.jpg)
19-Sep-18
25
Analysis of Linked List
add• we simply insert the new node after the current
node. So add is a one-step operation.
remove remove is also a one-step operation
find worst-case: may have to search the entire list
back
moving the current pointer back one node requires traversing the list from the start until the node whose next pointer points to current node.
Doubly-linked List
Moving forward in a singly-linked list is easy; moving backwards is not so easy.
![Page 26: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/26.jpg)
19-Sep-18
26
Doubly-linked List
Moving forward in a singly-linked list is easy; moving backwards is not so easy.
To move back one node, we have to start at the head of the singly-linked list and move forward until the node before the current.
Doubly-linked List
Moving forward in a singly-linked list is easy; moving backwards is not so easy.
To move back one node, we have to start at the head of the singly-linked list and move forward until the node before the current.
To avoid this we can use two pointers in a node: one to point to next node and another to point to the previous node:
element nextprev
![Page 27: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/27.jpg)
19-Sep-18
27
Doubly-Linked List Node
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; };
Node* getPrev() { return prevNode; };
void setPrev(Node* prevNode)
{ this->prevNode = prevNode; };
private:
int object;
Node* nextNode;
Node* prevNode;
};
Doubly-linked List
Need to be more careful when adding or removing a node.
Consider add: the order in which pointers are reorganized is important:
size=52 6 8 7 1head
current
![Page 28: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/28.jpg)
19-Sep-18
28
Doubly-linked List
1. newNode->setNext( current->getNext() );
size=52 6 8 7head
current
1
9newNode 1
Doubly-linked List
1. newNode->setNext( current->getNext() );
2. newNode->setprev( current );
size=52 6 8 7head
current
1
9newNode 1
2
![Page 29: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/29.jpg)
19-Sep-18
29
Doubly-linked List
1. newNode->setNext( current->getNext() );
2. newNode->setprev( current );
3. (current->getNext())->setPrev(newNode);
size=52 6 8 7head
current
1
9newNode 1
2 3
Doubly-linked List
1. newNode->setNext( current->getNext() );
2. newNode->setprev( current );
3. (current->getNext())->setPrev(newNode);
4. current->setNext( newNode );
size=52 6 8 7head
current
1
9newNode 1
2 34
![Page 30: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/30.jpg)
19-Sep-18
30
Doubly-linked List 1. newNode->setNext( current->getNext() );
2. newNode->setprev( current );
3. (current->getNext())->setPrev(newNode);
4. current->setNext( newNode );
5. current = newNode;
6. size++;
size=62 6 8 7head
current
1
9newNode 1
2 34
Circularly-linked lists
The next field in the last node in a singly-linked list is set to NULL.
Moving along a singly-linked list has to be done in a watchful manner.
Doubly-linked lists have two NULL pointers: prev in the first node and next in the last node.
A way around this potential hazard is to link the last node with the first node in the list to create a circularly-linked list.
![Page 31: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/31.jpg)
19-Sep-18
31
Circularly-linked lists
The next field in the last node in a singly-linked list is set to NULL.
Moving along a singly-linked list has to be done in a watchful manner.
Doubly-linked lists have two NULL pointers: prev in the first node and next in the last node.
A way around this potential hazard is to link the last node with the first node in the list to create a circularly-linked list.
Circularly-linked lists
The next field in the last node in a singly-linked list is set to NULL.
Moving along a singly-linked list has to be done in a watchful manner.
Doubly-linked lists have two NULL pointers: prev in the first node and next in the last node.
A way around this potential hazard is to link the last node with the first node in the list to create a circularly-linked list.
![Page 32: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/32.jpg)
19-Sep-18
32
Circularly-linked lists
The next field in the last node in a singly-linked list is set to NULL.
Moving along a singly-linked list has to be done in a watchful manner.
Doubly-linked lists have two NULL pointers: prev in the first node and next in the last node.
A way around this potential hazard is to link the last node with the first node in the list to create a circularly-linked list.
Cicularly Linked List
Two views of a circularly linked list:
2 6 8 7 1head
current
size=5
2
8
7
1
head
current
size=5
6
![Page 33: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/33.jpg)
19-Sep-18
33
Josephus Problem
A case where circularly linked list comes in handy is the solution of the Josephus Problem.
Josephus Problem
A case where circularly linked list comes in handy is the solution of the Josephus Problem.
Consider there are 10 persons. They would like to choose a leader.
![Page 34: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/34.jpg)
19-Sep-18
34
Josephus Problem
A case where circularly linked list comes in handy is the solution of the Josephus Problem.
Consider there are 10 persons. They would like to choose a leader.
The way they decide is that all 10 sit in a circle.
Josephus Problem
A case where circularly linked list comes in handy is the solution of the Josephus Problem.
Consider there are 10 persons. They would like to choose a leader.
The way they decide is that all 10 sit in a circle.
They start a count with person 1 and go in clockwise direction and skip 3. Person 4 reached is eliminated.
![Page 35: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/35.jpg)
19-Sep-18
35
Josephus Problem
A case where circularly linked list comes in handy is the solution of the Josephus Problem.
Consider there are 10 persons. They would like to choose a leader.
The way they decide is that all 10 sit in a circle.
They start a count with person 1 and go in clockwise direction and skip 3. Person 4 reached is eliminated.
The count starts with the fifth and the next person to go is the fourth in count.
Josephus Problem
A case where circularly linked list comes in handy is the solution of the Josephus Problem.
Consider there are 10 persons. They would like to choose a leader.
The way they decide is that all 10 sit in a circle.
They start a count with person 1 and go in clockwise direction and skip 3. Person 4 reached is eliminated.
The count starts with the fifth and the next person to go is the fourth in count.
Eventually, a single person remains.
![Page 36: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/36.jpg)
19-Sep-18
36
Josephus Problem
A case where circularly linked list comes in handy is the solution of the Josephus Problem.
Consider there are 10 persons. They would like to choose a leader.
The way they decide is that all 10 sit in a circle.
They start a count with person 1 and go in clockwise direction and skip 3. Person 4 reached is eliminated.
The count starts with the fifth and the next person to go is the fourth in count.
Eventually, a single person remains.
Josephus Problem
N=10, M=3
98
7
6
54
3
2
1
10
![Page 37: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/37.jpg)
19-Sep-18
37
Josephus Problem
N=10, M=3
98
7
6
54
3
2
1
10
eliminated
Josephus Problem
N=10, M=3
9
8
7
6
54
3
2
1
10
eliminated
![Page 38: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/38.jpg)
19-Sep-18
38
Josephus Problem
N=10, M=3
9
8
7
6
54
3
2
1
10
eliminated
Josephus Problem
N=10, M=3
9
8
7
6
54
3
2
1
10
eliminated
![Page 39: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/39.jpg)
19-Sep-18
39
Josephus Problem
N=10, M=3
9
8
7
6
54
3
2
1
10
eliminated
Josephus Problem
N=10, M=3
9
8
7
6
54
3
2
1
10
eliminated
![Page 40: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/40.jpg)
19-Sep-18
40
Josephus Problem
N=10, M=3
9
8
7
6
54
3
2
1
10
eliminated
Josephus Problem
N=10, M=3
9
8
7
6
54
3
2
1
10
eliminated
![Page 41: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/41.jpg)
19-Sep-18
41
Josephus Problem
#include "CList.cpp"
void main(int argc, char *argv[])
{
CList list;
int i, N=10, M=3;
for(i=1; i <= N; i++ ) list.add(i);
list.start();
while( list.length() > 1 ) {
for(i=1; i <= M; i++ ) list.next();
cout << "remove: " << list.get() << endl;
list.remove();
}
cout << "leader is: " << list.get() << endl;
}
Josephus Problem
#include "CList.cpp"
void main(int argc, char *argv[])
{
CList list;
int i, N=10, M=3;
for(i=1; i <= N; i++ ) list.add(i);
list.start();
while( list.length() > 1 ) {
for(i=1; i <= M; i++ ) list.next();
cout << "remove: " << list.get() << endl;
list.remove();
}
cout << "leader is: " << list.get() << endl;
}
![Page 42: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/42.jpg)
19-Sep-18
42
Josephus Problem
#include "CList.cpp"
void main(int argc, char *argv[])
{
CList list;
int i, N=10, M=3;
for(i=1; i <= N; i++ ) list.add(i);
list.start();
while( list.length() > 1 ) {
for(i=1; i <= M; i++ ) list.next();
cout << "remove: " << list.get() << endl;
list.remove();
}
cout << "leader is: " << list.get() << endl;
}
Josephus Problem
#include "CList.cpp"
void main(int argc, char *argv[])
{
CList list;
int i, N=10, M=3;
for(i=1; i <= N; i++ ) list.add(i);
list.start();
while( list.length() > 1 ) {
for(i=1; i <= M; i++ ) list.next();
cout << "remove: " << list.get() << endl;
list.remove();
}
cout << "leader is: " << list.get() << endl;
}
![Page 43: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/43.jpg)
19-Sep-18
43
Josephus Problem
#include "CList.cpp"
void main(int argc, char *argv[])
{
CList list;
int i, N=10, M=3;
for(i=1; i <= N; i++ ) list.add(i);
list.start();
while( list.length() > 1 ) {
for(i=1; i <= M; i++ ) list.next();
cout << "remove: " << list.get() << endl;
list.remove();
}
cout << "leader is: " << list.get() << endl;
}
Josephus Problem
#include "CList.cpp"
void main(int argc, char *argv[])
{
CList list;
int i, N=10, M=3;
for(i=1; i <= N; i++ ) list.add(i);
list.start();
while( list.length() > 1 ) {
for(i=1; i <= M; i++ ) list.next();
cout << "remove: " << list.get() << endl;
list.remove();
}
cout << "leader is: " << list.get() << endl;
}
![Page 44: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/44.jpg)
19-Sep-18
44
Josephus Problem
#include "CList.cpp"
void main(int argc, char *argv[])
{
CList list;
int i, N=10, M=3;
for(i=1; i <= N; i++ ) list.add(i);
list.start();
while( list.length() > 1 ) {
for(i=1; i <= M; i++ ) list.next();
cout << "remove: " << list.get() << endl;
list.remove();
}
cout << "leader is: " << list.get() << endl;
}
Josephus Problem
#include "CList.cpp"
void main(int argc, char *argv[])
{
CList list;
int i, N=10, M=3;
for(i=1; i <= N; i++ ) list.add(i);
list.start();
while( list.length() > 1 ) {
for(i=1; i <= M; i++ ) list.next();
cout << "remove: " << list.get() << endl;
list.remove();
}
cout << "leader is: " << list.get() << endl;
}
![Page 45: Lecture No.03 Data Structures file19-Sep-18 2 Linked List Operations add(9): Create a new node in memory to hold ‘9’ Node* newNode = new Node(9); newNod 9 e Linked List Operations](https://reader030.vdocuments.site/reader030/viewer/2022041204/5d54332688c993e5658bab38/html5/thumbnails/45.jpg)
19-Sep-18
45
Josephus Problem
#include "CList.cpp"
void main(int argc, char *argv[])
{
CList list;
int i, N=10, M=3;
for(i=1; i <= N; i++ ) list.add(i);
list.start();
while( list.length() > 1 ) {
for(i=1; i <= M; i++ ) list.next();
cout << "remove: " << list.get() << endl;
list.remove();
}
cout << "leader is: " << list.get() << endl;
}