#include <stdio.h>
typedef struct node{
int val;
struct node* prev;
struct node* next;
}Node;
typedef struct list{
Node* head;
Node* tail;
}List;
void pushFront(List* l, Node* node){
if(l->head == NULL){
l->head = node;
l->tail = node;
l->tail->next = NULL;
}else{
l->head->prev = node;
node->next = l->head;
l->head = node;
}
}
void printList(List* list){
Node *ptr = list->head;
while(ptr != NULL){
ptr = ptr->next;
}
}
void reverse(List* lista){
Node* ptr = lista->head;
Node* temp = NULL;
while(ptr != NULL){
temp = ptr->prev;
ptr->prev = ptr->next;
ptr->next = temp;
ptr = ptr->prev;
}
if(temp != NULL)
lista->head = temp->prev;
}
int main(void) {
List list = { NULL, NULL };
Node nodeArr[7];
int i;
for( i = 0; i < 7; i++ )
{
nodeArr[i].val = 7 - i;
nodeArr[i].prev = NULL;
nodeArr[i].next = NULL;
pushFront(&list, &nodeArr[i]);
}
printList(&list);
reverse(&list);
printList(&list);
// your code goes here
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp0eXBlZGVmIHN0cnVjdCBub2RlewogICAgaW50IHZhbDsKICAgIHN0cnVjdCBub2RlKiBwcmV2OwogICAgc3RydWN0IG5vZGUqIG5leHQ7Cn1Ob2RlOwoKdHlwZWRlZiBzdHJ1Y3QgbGlzdHsKICAgIE5vZGUqIGhlYWQ7CiAgICBOb2RlKiB0YWlsOwp9TGlzdDsKCnZvaWQgcHVzaEZyb250KExpc3QqIGwsIE5vZGUqIG5vZGUpewogICAgaWYobC0+aGVhZCA9PSBOVUxMKXsKICAgICAgICBsLT5oZWFkID0gbm9kZTsKICAgICAgICBsLT50YWlsID0gbm9kZTsKICAgICAgICBsLT50YWlsLT5uZXh0ID0gTlVMTDsKICAgIH1lbHNlewogICAgICAgIGwtPmhlYWQtPnByZXYgPSBub2RlOwogICAgICAgIG5vZGUtPm5leHQgPSBsLT5oZWFkOwogICAgICAgIGwtPmhlYWQgPSBub2RlOwogICAgfQp9CnZvaWQgcHJpbnRMaXN0KExpc3QqIGxpc3QpewoKICAgIE5vZGUgKnB0ciA9IGxpc3QtPmhlYWQ7CiAgICB3aGlsZShwdHIgIT0gTlVMTCl7CiAgICAgICAgcHJpbnRmKCIlaSAiLHB0ci0+dmFsKTsKICAgICAgICBwdHIgPSBwdHItPm5leHQ7CiAgICB9CiAgICBwdXRzKCIiKTsKfQoKdm9pZCByZXZlcnNlKExpc3QqIGxpc3RhKXsKCiAgICBOb2RlKiBwdHIgPSBsaXN0YS0+aGVhZDsKICAgIE5vZGUqIHRlbXAgPSBOVUxMOwogICAgd2hpbGUocHRyICE9IE5VTEwpewogICAgICAgIHRlbXAgPSBwdHItPnByZXY7CiAgICAgICAgcHRyLT5wcmV2ID0gcHRyLT5uZXh0OwogICAgICAgIHB0ci0+bmV4dCA9IHRlbXA7CiAgICAgICAgcHRyID0gcHRyLT5wcmV2OwogICAgfQoKICAgIGlmKHRlbXAgIT0gTlVMTCkKICAgICAgICBsaXN0YS0+aGVhZCA9IHRlbXAtPnByZXY7Cn0KCmludCBtYWluKHZvaWQpIHsKCUxpc3QgbGlzdCA9IHsgTlVMTCwgTlVMTCB9OwoJTm9kZSBub2RlQXJyWzddOwoJaW50IGk7CgkKCWZvciggaSA9IDA7IGkgPCA3OyBpKysgKQoJewoJCW5vZGVBcnJbaV0udmFsID0gNyAtIGk7CgkJbm9kZUFycltpXS5wcmV2ID0gTlVMTDsKCQlub2RlQXJyW2ldLm5leHQgPSBOVUxMOwoJCXB1c2hGcm9udCgmbGlzdCwgJm5vZGVBcnJbaV0pOwoJfQoJCglwcmludExpc3QoJmxpc3QpOwoJcmV2ZXJzZSgmbGlzdCk7CglwcmludExpc3QoJmxpc3QpOwoJCgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglyZXR1cm4gMDsKfQo=