#include <iostream>
using namespace std;
typedef struct node {
int data;
node *next;
node *prev;
};
void printList(node *temp);
int main()
{
node *head;
head = new node;
head->prev = NULL;
node *next = head;
node *prev = head;
node *temp = head;
node *current = head;
//creates 100 nodes, last one points to next
for(int x = 0; x<100; x++)
{
temp->data = x;
current = temp;
temp = new node;
current->next = temp;
temp->prev = current;
temp->next = NULL;
}
//=========================================
printList(head);
//=========== set everything to head ===========
current = head;
prev = head;
//============= reverses linked list ============
for(int i = 0; i<50; i++)
{
next = current->next; //moves next pointer to next node
current->prev = next; //points current's previous to next node
current = next; //set current pointer to next node
cout<<current->data;
current->next = prev; //set current's next to previous node
prev = current; //move prev node up to current
}
cout<<"done";
return 0;
}
void printList(node *temp)
{
while(temp->next != NULL)
{
cout<<temp->data<<'\n';
temp = temp->next;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBzdHJ1Y3Qgbm9kZSB7CiAgaW50IGRhdGE7CiAgbm9kZSAqbmV4dDsKICBub2RlICpwcmV2Owp9OwoKdm9pZCBwcmludExpc3Qobm9kZSAqdGVtcCk7CgppbnQgbWFpbigpCnsKCW5vZGUgKmhlYWQ7CgloZWFkID0gbmV3IG5vZGU7CgloZWFkLT5wcmV2ID0gTlVMTDsKCW5vZGUgKm5leHQgPSBoZWFkOwoJbm9kZSAqcHJldiA9IGhlYWQ7Cglub2RlICp0ZW1wID0gaGVhZDsKCW5vZGUgKmN1cnJlbnQgPSBoZWFkOwoJCgkKCS8vY3JlYXRlcyAxMDAgbm9kZXMsIGxhc3Qgb25lIHBvaW50cyB0byBuZXh0Cglmb3IoaW50IHggPSAwOyB4PDEwMDsgeCsrKQoJewoJdGVtcC0+ZGF0YSA9IHg7CgljdXJyZW50ID0gdGVtcDsKCXRlbXAgPSBuZXcgbm9kZTsKCWN1cnJlbnQtPm5leHQgPSB0ZW1wOwoJdGVtcC0+cHJldiA9IGN1cnJlbnQ7Cgl0ZW1wLT5uZXh0ID0gTlVMTDsKCX0KCS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoJcHJpbnRMaXN0KGhlYWQpOwoKCS8vPT09PT09PT09PT0gc2V0IGV2ZXJ5dGhpbmcgdG8gaGVhZCA9PT09PT09PT09PQoJY3VycmVudCA9IGhlYWQ7CglwcmV2ID0gaGVhZDsKCQoKCgkvLz09PT09PT09PT09PT0gcmV2ZXJzZXMgbGlua2VkIGxpc3QgPT09PT09PT09PT09Cglmb3IoaW50IGkgPSAwOyBpPDUwOyBpKyspCgl7CQoJbmV4dCA9IGN1cnJlbnQtPm5leHQ7CS8vbW92ZXMgbmV4dCBwb2ludGVyIHRvIG5leHQgbm9kZQoJY3VycmVudC0+cHJldiA9IG5leHQ7CS8vcG9pbnRzIGN1cnJlbnQncyBwcmV2aW91cyB0byBuZXh0IG5vZGUKCQoJY3VycmVudCA9IG5leHQ7CQkJLy9zZXQgY3VycmVudCBwb2ludGVyIHRvIG5leHQgbm9kZQoJY291dDw8Y3VycmVudC0+ZGF0YTsKCWN1cnJlbnQtPm5leHQgPSBwcmV2OwkvL3NldCBjdXJyZW50J3MgbmV4dCB0byBwcmV2aW91cyBub2RlCglwcmV2ID0gY3VycmVudDsJCQkvL21vdmUgcHJldiBub2RlIHVwIHRvIGN1cnJlbnQKCX0KCgljb3V0PDwiZG9uZSI7CgoJcmV0dXJuIDA7Cn0KCgoKdm9pZCBwcmludExpc3Qobm9kZSAqdGVtcCkKewoJd2hpbGUodGVtcC0+bmV4dCAhPSBOVUxMKQoJewoJCWNvdXQ8PHRlbXAtPmRhdGE8PCdcbic7CgkJdGVtcCA9IHRlbXAtPm5leHQ7Cgl9Cn0K