Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct Node
- {
- int value;
- struct Node *next;
- } node;
- node *create_node(int data);
- node *insert(node *head, int data);
- void print_list(node *head);
- node *create_node(int data)
- {
- node *temp = (node *)malloc(sizeof(node));
- temp->value = data; // current pointer
- temp->next = NULL;
- return temp;
- }
- node *insert(node *head, int data)
- {
- // 1 -> 2 -> 3 -> NULL
- // -> NULL
- node *temp = head;
- if(head == NULL) // 1 item
- {
- head = create_node(data);
- }
- else
- {
- while(temp->next != NULL)
- {
- temp = temp->next;
- }
- temp->next = create_node(data);
- }
- return head;
- }
- void print_list(node *head)
- {
- node *temp = head;
- if(head == NULL)
- {
- printf("\nList is empty!\n");
- }
- else {
- printf("\n\n");
- while (temp->next != NULL)
- {
- printf("%d -> ", temp->value);
- temp = temp->next;
- }
- printf("%d\n\n", temp->value);
- }
- }
- node* remove_last_item(node *head)
- {
- // 1>3>5>6>NULL
- node *temp = head;
- node *delete_node;
- if(head == NULL)
- printf("\nList is empty!\n");
- else if(temp->next == NULL)
- {
- delete_node = temp;
- head = NULL;
- free(delete_node);
- }
- else
- {
- while(temp->next->next != NULL)
- {
- temp = temp->next;
- }
- delete_node = temp->next;
- temp->next = NULL;
- free(delete_node);
- }
- return head;
- }
- node* remove_item(node *head, int num)
- {
- // 1>3>5>6>NULL
- node *temp = head;
- node *delete_node;
- if(head == NULL)
- printf("\nList is empty!\n");
- else if(temp->value == num)
- {
- delete_node = temp;
- free(delete_node);
- head = temp->next;
- return head;
- }
- else
- {
- while(temp->next != NULL)
- {
- if(temp->next->value == num)
- {
- delete_node = temp->next;
- temp->next = temp->next->next;
- free(delete_node);
- return head;
- }
- temp = temp->next;
- }
- if(temp->next == NULL && temp->value != num)
- {
- printf("Didn't find!\n");
- return head;
- }
- }
- return head;
- }
- void delete_list(node** head)
- {
- // 1>3>10>12>NULL
- // 1>10>12>NULL
- node *delete_node;
- if (*head == NULL)
- printf("List is empty!");
- else
- {
- while (*head != NULL)
- {
- delete_node = *head;
- *head = (*head)->next;
- free(delete_node);
- }
- *head = NULL;
- printf("\nList cleared!");
- }
- }
- int func(node **head_even, node **head_odd)
- {
- printf("\nPlease enter values.\nEnter -1 to stop.\n\n");
- int input, counter = 0;
- scanf("%d", &input);
- counter++;
- while(input != -1)
- {
- if(input % 2 == 0)
- *head_even = insert(*head_even, input);
- else
- *head_odd = insert(*head_odd, input);
- counter++;
- scanf("%d", &input);
- }
- return counter-1;
- }
- int func2(node *head, int *pass_min, int *pass_max)
- {
- // 1,3,5,6,7
- if(head == NULL)
- {
- *pass_min = 0;
- *pass_max = 0;
- return 0;
- }
- int sum = 0;
- int max = head->value;
- int min = head->value;
- sum += head->value;
- node *temp = head;
- if(temp->next == NULL)
- {
- *pass_min = min;
- *pass_max = max;
- return sum;
- }
- temp = temp->next;
- while(temp != NULL)
- {
- sum += temp->value;
- if(temp->value >= max)
- max = temp->value;
- if(temp->value <= min)
- min = temp->value;
- temp = temp->next;
- }
- *pass_max = max;
- *pass_min = min;
- return sum;
- }
- void print_value(int x)
- {
- printf("\n%d\n", x);
- }
- void main()
- {
- node *head_even = NULL;
- node *head_odd = NULL;
- int counter = func(&head_even, &head_odd);
- printf("\n\nEven List:");
- print_list(head_even);
- printf("\nOdd List:");
- print_list(head_odd);
- printf("\nCounter: %d\n\n", counter);
- int min, max;
- int sum = func2(head_even, &min, &max);
- print_value(min);
- print_value(max);
- print_value(sum);
- delete_list(&head_even);
- delete_list(&head_odd);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement