fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. typedef struct node {
  5. int data;
  6. node *next;
  7. node *prev;
  8. };
  9.  
  10. void printList(node *temp);
  11.  
  12. int main()
  13. {
  14. node *head;
  15. head = new node;
  16. head->prev = NULL;
  17. node *next = head;
  18. node *prev = head;
  19. node *temp = head;
  20. node *current = head;
  21.  
  22.  
  23. //creates 100 nodes, last one points to next
  24. for(int x = 0; x<100; x++)
  25. {
  26. temp->data = x;
  27. current = temp;
  28. temp = new node;
  29. current->next = temp;
  30. temp->prev = current;
  31. temp->next = NULL;
  32. }
  33. //=========================================
  34.  
  35.  
  36. printList(head);
  37.  
  38. //=========== set everything to head ===========
  39. current = head;
  40. prev = head;
  41.  
  42.  
  43.  
  44. //============= reverses linked list ============
  45. for(int i = 0; i<50; i++)
  46. {
  47. next = current->next; //moves next pointer to next node
  48. current->prev = next; //points current's previous to next node
  49.  
  50. current = next; //set current pointer to next node
  51. cout<<current->data;
  52. current->next = prev; //set current's next to previous node
  53. prev = current; //move prev node up to current
  54. }
  55.  
  56. cout<<"done";
  57.  
  58. return 0;
  59. }
  60.  
  61.  
  62.  
  63. void printList(node *temp)
  64. {
  65. while(temp->next != NULL)
  66. {
  67. cout<<temp->data<<'\n';
  68. temp = temp->next;
  69. }
  70. }
  71.  
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
10101010101010101010101010101010101010101010101010done