#include <bits/stdc++.h>
using
namespace
std;
struct
Node {
int
data;
struct
Node* next;
struct
Node* prev;
};
void
insertEnd(
struct
Node** start,
int
value)
{
if
(*start == NULL) {
struct
Node* new_node =
new
Node();
new_node->data = value;
new_node->next = new_node;
new_node->prev = new_node;
*start = new_node;
return
;
}
Node* last = (*start)->prev;
struct
Node* new_node =
new
Node;
new_node->data = value;
new_node->next = *start;
(*start)->prev = new_node;
new_node->prev = last;
last->next = new_node;
}
void
display(
struct
Node* start)
{
struct
Node* temp = start;
printf
(
"Traversal in forward "
"direction \n"
);
while
(temp->next != start) {
printf
(
"%d "
, temp->data);
temp = temp->next;
}
printf
(
"%d "
, temp->data);
printf
(
"\nTraversal in reverse"
" direction \n"
);
Node* last = start->prev;
temp = last;
while
(temp->prev != last) {
printf
(
"%d "
, temp->data);
temp = temp->prev;
}
printf
(
"%d "
, temp->data);
}
int
findSum(Node*& start)
{
int
sum = 0;
Node* temp = start;
while
(temp->next != start) {
sum += temp->data;
temp = temp->next;
}
sum += temp->data;
return
sum;
}
void
updateNodeValue(Node*& start)
{
int
sum = findSum(start);
Node* temp = start;
while
(temp->next != start) {
temp->data = sum - temp->data;
temp = temp->next;
}
temp->data = sum - temp->data;
}
Node* formLinkedList(Node* start)
{
insertEnd(&start, 4);
insertEnd(&start, 5);
insertEnd(&start, 6);
insertEnd(&start, 7);
insertEnd(&start, 8);
return
start;
}
int
main()
{
struct
Node* start = NULL;
start = formLinkedList(start);
display(start);
updateNodeValue(start);
cout <<
"\nAfter updating "
<<
"the node values:\n"
;
display(start);
return
0;
}
Original page link
Best Cool Tech Gadgets
Top favorite technology gadgets
0 comments:
Post a Comment