fork download
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. struct node {
  5. int data;
  6. struct node *next;
  7. }*init;
  8.  
  9. int length(struct node *n);
  10. struct node *searchVal(struct node *n, int val);
  11. struct node *createLinkedList(int data);
  12. struct node *insertEnd(struct node *n, int data);
  13. struct node *insertBeg( struct node *n, int data);
  14. void printList(struct node *n);
  15.  
  16. int main(int argc, char **argv) {
  17. struct node * newHeader;
  18. init = createLinkedList(1);
  19. insertEnd(init, 6);
  20. newHeader = insertBeg(init, 9);
  21. init = newHeader;
  22. printList(init);
  23. }
  24.  
  25. void printList(struct node *n) {
  26. if (n != NULL) {
  27. while (n != NULL) {
  28. printf("%d", n->data);
  29. n = n->next;
  30. }
  31. } else {
  32. printf("Empty List");
  33. }
  34. }
  35.  
  36. /**
  37.  * returns length of node
  38.  */
  39. int length(struct node *n) {
  40. int count = 0;
  41. if (!n) {
  42. return 0;
  43. }
  44.  
  45. struct node *ptr = n;
  46. while(ptr != NULL) {
  47. count = count + 1;
  48. ptr = ptr->next;
  49. }
  50. return count;
  51. }
  52.  
  53. struct node *searchVal(struct node *n, int val) {
  54. struct node *pos;
  55. if (!n) {
  56. return NULL;
  57. }
  58.  
  59.  
  60. struct node *ptr = n;
  61. while (ptr != NULL) {
  62. if (val == ptr->data){
  63. pos = ptr;
  64. return pos;
  65. } else {
  66. ptr = ptr->next;
  67. }
  68. }
  69. return NULL;
  70. }
  71.  
  72. struct node *createLinkedList(int data) {
  73. struct node *new_node;
  74. new_node = (struct node *)malloc(sizeof(struct node));
  75.  
  76. if (new_node == NULL) return NULL;
  77. new_node->data = data;
  78. new_node->next = NULL;
  79.  
  80. return new_node;
  81. }
  82.  
  83. struct node *insertBeg(struct node *n, int data) {
  84. struct node *new_node;
  85. new_node = (struct node *)malloc(sizeof(struct node));
  86. if (new_node == NULL) {
  87. return NULL;
  88. }
  89.  
  90. new_node->data = data;
  91. new_node->next = n;
  92. n = new_node;
  93. return n;
  94. }
  95.  
  96. struct node *insertEnd(struct node *n, int data){
  97. struct node *new_node, *temp;
  98. new_node = (struct node *)malloc(sizeof(struct node));
  99.  
  100. if (new_node == NULL) {
  101. return NULL;
  102. }
  103.  
  104. new_node->data = data;
  105. if (n == NULL) {
  106. new_node->next = NULL;
  107. temp = new_node;
  108. } else {
  109. temp = n;
  110. while (temp->next != NULL) {
  111. temp = temp->next;
  112. temp->next = temp;
  113. }
  114. temp->next = new_node;
  115. new_node->next = NULL;
  116. }
  117. return temp;
  118. }
Success #stdin #stdout 0s 9424KB
stdin
Standard input is empty
stdout
916