/*
* File: evenoddlinkedlist.c
* Author: srkrishnan
*
* Created on June 30, 2011, 4:26 PM
*/
#include <stdio.h>
#include <stdlib.h>
typedef struct List {
int data;
struct List *link;
} List;
List *createnode(int data) {
List
*n
= (List
*) malloc(sizeof (List
)); n->data = data;
n->link = NULL;
return n;
}
List *evenodd(List *head) {
List *evenhead = NULL, *oddhead = NULL, *eventail = NULL, *oddtail = NULL;
while (head != NULL) {
if (head->data % 2 == 0) {
if (evenhead == NULL) {
evenhead = head;
eventail = head;
} else {
eventail->link = head;
eventail = head;
}
} else {
if (oddhead == NULL) {
oddhead = head;
oddtail = head;
} else {
oddtail->link = head;
oddtail = head;
}
}
head = head->link;
}
if (evenhead != NULL)
eventail->link = oddhead;
else
evenhead = oddhead;
if (oddtail != NULL)
oddtail->link = NULL;
return evenhead;
}
int main(int argc, char** argv) {
List *tmp = NULL, *head = createnode(41);
head->link = createnode(201);
head->link->link = createnode(21);
head->link->link->link = createnode(51);
head->link->link->link->link = createnode(151);
head->link->link->link->link->link = createnode(21212);
head->link->link->link->link->link->link = createnode(211);
tmp = head;
while (tmp) {
tmp = tmp->link;
}
tmp = evenodd(head);
while (tmp) {
tmp = tmp->link;
}
return (EXIT_SUCCESS);
}
LyogCiAqIEZpbGU6ICAgZXZlbm9kZGxpbmtlZGxpc3QuYwogKiBBdXRob3I6IHNya3Jpc2huYW4KICoKICogQ3JlYXRlZCBvbiBKdW5lIDMwLCAyMDExLCA0OjI2IFBNCiAqLwoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgc3RydWN0IExpc3QgewogICAgaW50IGRhdGE7CiAgICBzdHJ1Y3QgTGlzdCAqbGluazsKfSBMaXN0OwoKTGlzdCAqY3JlYXRlbm9kZShpbnQgZGF0YSkgewogICAgTGlzdCAqbiA9IChMaXN0KikgbWFsbG9jKHNpemVvZiAoTGlzdCkpOwogICAgbi0+ZGF0YSA9IGRhdGE7CiAgICBuLT5saW5rID0gTlVMTDsKICAgIHJldHVybiBuOwp9CgpMaXN0ICpldmVub2RkKExpc3QgKmhlYWQpIHsKICAgIExpc3QgKmV2ZW5oZWFkID0gTlVMTCwgKm9kZGhlYWQgPSBOVUxMLCAqZXZlbnRhaWwgPSBOVUxMLCAqb2RkdGFpbCA9IE5VTEw7CiAgICB3aGlsZSAoaGVhZCAhPSBOVUxMKSB7CiAgICAgICAgaWYgKGhlYWQtPmRhdGEgJSAyID09IDApIHsKICAgICAgICAgICAgaWYgKGV2ZW5oZWFkID09IE5VTEwpIHsKICAgICAgICAgICAgICAgIGV2ZW5oZWFkID0gaGVhZDsKICAgICAgICAgICAgICAgIGV2ZW50YWlsID0gaGVhZDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGV2ZW50YWlsLT5saW5rID0gaGVhZDsKICAgICAgICAgICAgICAgIGV2ZW50YWlsID0gaGVhZDsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChvZGRoZWFkID09IE5VTEwpIHsKICAgICAgICAgICAgICAgIG9kZGhlYWQgPSBoZWFkOwogICAgICAgICAgICAgICAgb2RkdGFpbCA9IGhlYWQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBvZGR0YWlsLT5saW5rID0gaGVhZDsKICAgICAgICAgICAgICAgIG9kZHRhaWwgPSBoZWFkOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGhlYWQgPSBoZWFkLT5saW5rOwogICAgfQogICAgaWYgKGV2ZW5oZWFkICE9IE5VTEwpCiAgICAgICAgZXZlbnRhaWwtPmxpbmsgPSBvZGRoZWFkOwogICAgZWxzZQogICAgICAgIGV2ZW5oZWFkID0gb2RkaGVhZDsKICAgIGlmIChvZGR0YWlsICE9IE5VTEwpCiAgICAgICAgb2RkdGFpbC0+bGluayA9IE5VTEw7CiAgICByZXR1cm4gZXZlbmhlYWQ7Cn0KCmludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikgewoKICAgIExpc3QgKnRtcCA9IE5VTEwsICpoZWFkID0gY3JlYXRlbm9kZSg0MSk7CiAgICBoZWFkLT5saW5rID0gY3JlYXRlbm9kZSgyMDEpOwogICAgaGVhZC0+bGluay0+bGluayA9IGNyZWF0ZW5vZGUoMjEpOwogICAgaGVhZC0+bGluay0+bGluay0+bGluayA9IGNyZWF0ZW5vZGUoNTEpOwogICAgaGVhZC0+bGluay0+bGluay0+bGluay0+bGluayA9IGNyZWF0ZW5vZGUoMTUxKTsKICAgIGhlYWQtPmxpbmstPmxpbmstPmxpbmstPmxpbmstPmxpbmsgPSBjcmVhdGVub2RlKDIxMjEyKTsKICAgIGhlYWQtPmxpbmstPmxpbmstPmxpbmstPmxpbmstPmxpbmstPmxpbmsgPSBjcmVhdGVub2RlKDIxMSk7CgogICAgdG1wID0gaGVhZDsKICAgIHdoaWxlICh0bXApIHsKICAgICAgICBwcmludGYoIiVkLT4iLCB0bXAtPmRhdGEpOwogICAgICAgIHRtcCA9IHRtcC0+bGluazsKICAgIH0KICAgIHByaW50ZigiTlVMTFxuIik7CgogICAgdG1wID0gZXZlbm9kZChoZWFkKTsKICAgIHByaW50ZigiQXJyYW5naW5nLi4uLi4uXG4iKTsKICAgIHdoaWxlICh0bXApIHsKICAgICAgICBwcmludGYoIiVkLT4iLCB0bXAtPmRhdGEpOwogICAgICAgIHRtcCA9IHRtcC0+bGluazsKICAgIH0KICAgIHByaW50ZigiTlVMTCIpOwoKCiAgICByZXR1cm4gKEVYSVRfU1VDQ0VTUyk7Cn0K