fork download
  1. /*
  2.  * File: evenoddlinkedlist.c
  3.  * Author: srkrishnan
  4.  *
  5.  * Created on June 30, 2011, 4:26 PM
  6.  */
  7.  
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10.  
  11. typedef struct List {
  12. int data;
  13. struct List *link;
  14. } List;
  15.  
  16. List *createnode(int data) {
  17. List *n = (List*) malloc(sizeof (List));
  18. n->data = data;
  19. n->link = NULL;
  20. return n;
  21. }
  22.  
  23. List *evenodd(List *head) {
  24. List *evenhead = NULL, *oddhead = NULL, *eventail = NULL, *oddtail = NULL;
  25. while (head != NULL) {
  26. if (head->data % 2 == 0) {
  27. if (evenhead == NULL) {
  28. evenhead = head;
  29. eventail = head;
  30. } else {
  31. eventail->link = head;
  32. eventail = head;
  33. }
  34. } else {
  35. if (oddhead == NULL) {
  36. oddhead = head;
  37. oddtail = head;
  38. } else {
  39. oddtail->link = head;
  40. oddtail = head;
  41. }
  42. }
  43. head = head->link;
  44. }
  45. if (evenhead != NULL)
  46. eventail->link = oddhead;
  47. else
  48. evenhead = oddhead;
  49. if (oddtail != NULL)
  50. oddtail->link = NULL;
  51. return evenhead;
  52. }
  53.  
  54. int main(int argc, char** argv) {
  55.  
  56. List *tmp = NULL, *head = createnode(41);
  57. head->link = createnode(201);
  58. head->link->link = createnode(21);
  59. head->link->link->link = createnode(51);
  60. head->link->link->link->link = createnode(151);
  61. head->link->link->link->link->link = createnode(21212);
  62. head->link->link->link->link->link->link = createnode(211);
  63.  
  64. tmp = head;
  65. while (tmp) {
  66. printf("%d->", tmp->data);
  67. tmp = tmp->link;
  68. }
  69. printf("NULL\n");
  70.  
  71. tmp = evenodd(head);
  72. printf("Arranging......\n");
  73. while (tmp) {
  74. printf("%d->", tmp->data);
  75. tmp = tmp->link;
  76. }
  77. printf("NULL");
  78.  
  79.  
  80. return (EXIT_SUCCESS);
  81. }
  82.  
Success #stdin #stdout 0s 1852KB
stdin
Standard input is empty
stdout
41->201->21->51->151->21212->211->NULL
Arranging......
21212->41->201->21->51->151->211->NULL