#include <stdio.h>
#include<stdlib.h>
struct node2
{
int number;
struct node2 *next, *prev;
};
void addNodeDouble(struct node2 **head, struct node2 **tail, int num, int thesi)
{
if (*head == NULL)
{
struct node2 * current;
current
= (struct node2
*) malloc (1*sizeof(struct node2
)); current -> number = num;
current -> prev = NULL;
current -> next = NULL;
*head = current;
*tail = current;
}
else
{
if(thesi==1)
{
struct node2 *current,*temp;
current
= (struct node2
*) malloc (1*sizeof(struct node2
)); current->number=num;
temp = *head;
while (temp -> next != NULL)
temp = temp -> next;
temp -> next = current;
current -> prev = *tail;
current -> next = NULL;
(*tail) -> next = current;
*tail = current;
}
else
{
struct node2 *current;
current
= (struct node2
*) malloc (1*sizeof(struct node2
)); current -> number = num;
current -> next = *head;
(*head) -> prev = current;
*head = current;
}
}
}
void ReversedisplayList(struct node2 **head, struct node2 **tail)
{
struct node2 *current;
if(*head == NULL)
printf("I lista einai adeia!\n");
else
{
current = *tail;
while(current != NULL)
{
printf("%d ",current
-> number
); current = current -> prev;
}
}
}
void swapElements2(struct node2 **head, struct node2 **tail)
{
struct node2 *current, *temp;
temp = (*tail) -> prev;
current = *tail;
temp -> next = *head;
current -> next = (*head) -> next;
(*head) -> next = NULL;
*head = current;
}
int main()
{
struct node2 *head, *tail;
head = tail = NULL;
addNodeDouble(&head,&tail,4,1);
addNodeDouble(&head,&tail,8,1);
addNodeDouble(&head,&tail,3,0);
addNodeDouble(&head,&tail,1,1);
addNodeDouble(&head,&tail,7,0);
printf("\n\nDoubly linked list (reversed): "); ReversedisplayList(&head,&tail);
swapElements2(&head,&tail);
ReversedisplayList(&head,&tail);
}
ICAgICAgICAgICAgI2luY2x1ZGUgPHN0ZGlvLmg+CiAgICAgICAgICAgICNpbmNsdWRlPHN0ZGxpYi5oPgogICAgIAogICAgICAgICAgICBzdHJ1Y3Qgbm9kZTIKCQkJewoJCQkgICAgaW50IG51bWJlcjsKCQkJICAgIHN0cnVjdCBub2RlMiAqbmV4dCwgKnByZXY7CgkJCX07CiAgICAgCgkJCXZvaWQgYWRkTm9kZURvdWJsZShzdHJ1Y3Qgbm9kZTIgKipoZWFkLCBzdHJ1Y3Qgbm9kZTIgKip0YWlsLCBpbnQgbnVtLCBpbnQgdGhlc2kpCgkJCXsKCQkJICAgICBpZiAoKmhlYWQgPT0gTlVMTCkKCQkJICAgICAgICB7CgkJCSAgICAgICAgICAgICAgc3RydWN0IG5vZGUyICogY3VycmVudDsKCQkJICAgICAgICAgICAgICBjdXJyZW50ID0gKHN0cnVjdCBub2RlMiopIG1hbGxvYyAoMSpzaXplb2Yoc3RydWN0IG5vZGUyKSk7CgkJCSAgICAgICAgICAgICAgY3VycmVudCAtPiBudW1iZXIgPSBudW07CgkJCSAgICAgICAgICAgICAgY3VycmVudCAtPiBwcmV2ID0gTlVMTDsKCQkJICAgICAgICAgICAgICBjdXJyZW50IC0+IG5leHQgPSBOVUxMOwoJCQkgICAgICAgICAgICAgICpoZWFkID0gY3VycmVudDsKCQkJICAgICAgICAgICAgICAqdGFpbCA9IGN1cnJlbnQ7CgkJCSAgICAgICAgIH0KCQkJICAgIGVsc2UKCQkJICAgIHsKCQkJICAgICAgICBpZih0aGVzaT09MSkKCQkJICAgICAgICB7CgkJCSAgICAgICAgICAgIHN0cnVjdCBub2RlMiAqY3VycmVudCwqdGVtcDsKCQkJICAgICAgICAgICAgY3VycmVudCA9IChzdHJ1Y3Qgbm9kZTIqKSBtYWxsb2MgKDEqc2l6ZW9mKHN0cnVjdCBub2RlMikpOwoJCQkgICAgICAgICAgICBjdXJyZW50LT5udW1iZXI9bnVtOwoJCQkgICAgICAgICAgICB0ZW1wID0gKmhlYWQ7CgkJCSAgICAgICAgICAgIHdoaWxlICh0ZW1wIC0+IG5leHQgIT0gTlVMTCkKCQkJICAgICAgICAgICAgICAgICAgdGVtcCA9IHRlbXAgLT4gbmV4dDsKCQkJCgkJCSAgICAgICAgICAgIHRlbXAgLT4gbmV4dCA9IGN1cnJlbnQ7CgkJCSAgICAgICAgICAgIGN1cnJlbnQgLT4gcHJldiA9ICp0YWlsOwoJCQkgICAgICAgICAgICBjdXJyZW50IC0+IG5leHQgPSBOVUxMOwoJCQkgICAgICAgICAgICAoKnRhaWwpIC0+IG5leHQgPSBjdXJyZW50OwoJCQkgICAgICAgICAgICAqdGFpbCA9IGN1cnJlbnQ7CgkJCSAgICAgICAgfQoJCQkgICAgICAgIGVsc2UKCQkJICAgICAgICB7CgkJCSAgICAgICAgICAgIHN0cnVjdCBub2RlMiAqY3VycmVudDsKCQkJICAgICAgICAgICAgY3VycmVudCA9IChzdHJ1Y3Qgbm9kZTIqKSBtYWxsb2MgKDEqc2l6ZW9mKHN0cnVjdCBub2RlMikpOwoJCQkgICAgICAgICAgICBjdXJyZW50IC0+IG51bWJlciA9IG51bTsKCQkJICAgICAgICAgICAgY3VycmVudCAtPiBuZXh0ID0gKmhlYWQ7CgkJCSAgICAgICAgICAgICgqaGVhZCkgLT4gcHJldiA9IGN1cnJlbnQ7CgkJCSAgICAgICAgICAgICpoZWFkID0gY3VycmVudDsKCQkJICAgICAgICB9CgkJCSAgICB9CgkJCX0KICAgICAKCQkJdm9pZCBSZXZlcnNlZGlzcGxheUxpc3Qoc3RydWN0IG5vZGUyICoqaGVhZCwgc3RydWN0IG5vZGUyICoqdGFpbCkKCQkJewoJCQkgICAgc3RydWN0IG5vZGUyICpjdXJyZW50OwoJCQkgICAgaWYoKmhlYWQgPT0gTlVMTCkKCQkJICAgICAgICBwcmludGYoIkkgbGlzdGEgZWluYWkgYWRlaWEhXG4iKTsKCQkJCgkJCSAgICBlbHNlCgkJCSAgICB7CgkJCSAgICAgICAgY3VycmVudCA9ICp0YWlsOwoJCQkgICAgICAgIHdoaWxlKGN1cnJlbnQgIT0gTlVMTCkKCQkJICAgICAgICB7CgkJCSAgICAgICAgICAgIHByaW50ZigiJWQgIixjdXJyZW50IC0+IG51bWJlcik7CgkJCSAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50IC0+IHByZXY7CgkJCSAgICAgICAgfQoJCQkgICAgfQoJCQl9CiAgICAgCgkJCXZvaWQgc3dhcEVsZW1lbnRzMihzdHJ1Y3Qgbm9kZTIgKipoZWFkLCBzdHJ1Y3Qgbm9kZTIgKip0YWlsKQoJCQl7CgkJCSAgICBzdHJ1Y3Qgbm9kZTIgKmN1cnJlbnQsICp0ZW1wOwoJCQkKCQkJICAgIHRlbXAgPSAoKnRhaWwpIC0+IHByZXY7CgkJCSAgICBjdXJyZW50ID0gKnRhaWw7CgkJCQoJCQkgICAgdGVtcCAtPiBuZXh0ID0gKmhlYWQ7CgkJCSAgICBjdXJyZW50IC0+IG5leHQgPSAoKmhlYWQpIC0+IG5leHQ7CgkJCSAgICAoKmhlYWQpIC0+IG5leHQgPSBOVUxMOwoJCQkgICAgKmhlYWQgPSBjdXJyZW50OwoJCQl9CiAgICAgICAgICAgIGludCBtYWluKCkKICAgICAgICAgICAgewoJCQkgICAgc3RydWN0IG5vZGUyICpoZWFkLCAqdGFpbDsKCQkJICAgIGhlYWQgPSB0YWlsID0gTlVMTDsKCQkJCgkJCSAgICBhZGROb2RlRG91YmxlKCZoZWFkLCZ0YWlsLDQsMSk7CgkJCSAgICBhZGROb2RlRG91YmxlKCZoZWFkLCZ0YWlsLDgsMSk7CgkJCSAgICBhZGROb2RlRG91YmxlKCZoZWFkLCZ0YWlsLDMsMCk7CgkJCSAgICBhZGROb2RlRG91YmxlKCZoZWFkLCZ0YWlsLDEsMSk7CgkJCSAgICBhZGROb2RlRG91YmxlKCZoZWFkLCZ0YWlsLDcsMCk7CgkJCQoJCQkgICAgcHJpbnRmKCJcblxuRG91Ymx5IGxpbmtlZCBsaXN0IChyZXZlcnNlZCk6ICIpOwoJCQkgICAgUmV2ZXJzZWRpc3BsYXlMaXN0KCZoZWFkLCZ0YWlsKTsKCQkJCgkJCSAgICBzd2FwRWxlbWVudHMyKCZoZWFkLCZ0YWlsKTsKCQkJICAgIHByaW50ZigiXG5DaGFuZ2VkIGxpc3Q6ICIpOwoJCQkgICAgUmV2ZXJzZWRpc3BsYXlMaXN0KCZoZWFkLCZ0YWlsKTsKICAgICAgICAgICAgfQ==