Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include "list.h"
- #include "errs.h"
- void free_list(node_t *head)
- {
- node_t *tmp = head;
- for (; head; head = tmp)
- {
- tmp = head->next;
- free(head);
- head = NULL;
- }
- }
- int print_list(node_t * head)
- {
- int rc = (head == NULL) * ERR_NULL_HEAD;
- if (!rc)
- {
- for (node_t *tmp = head; tmp; tmp = tmp->next)
- printf("%d ", tmp->data);
- printf("\n");
- }
- return rc;
- }
- node_t *create_node(int data)
- {
- node_t *temp = malloc(sizeof(node_t));
- if (temp)
- {
- temp->data = data;
- temp->next = NULL;
- }
- return temp;
- }
- int pop_front(node_t **head)
- {
- int pop_data = 0;
- if (head != NULL && *head != NULL)
- {
- node_t *prev = *head;
- pop_data = (*head)->data;
- *head = (*head)->next;
- free(prev);
- }
- return pop_data;
- }
- int pop_back(node_t **head)
- {
- int pop_data = 0;
- if (head != NULL && *head != NULL)
- {
- node_t *tmp = *head;
- node_t *prev_tmp = tmp;
- for (; tmp->next; prev_tmp = tmp, tmp = tmp->next);
- pop_data = tmp->data;
- prev_tmp->next = NULL;
- free(tmp);
- if (*head == tmp)
- *head = NULL;
- }
- return pop_data;
- }
- int push_back_value(node_t **head, int data)
- {
- int rc = (head == NULL) * ERR_NULL_HEAD;
- if (!rc)
- {
- node_t *new_node = create_node(data);
- if (*head == NULL)
- *head = new_node;
- else
- {
- node_t *tmp = *head;
- for (; tmp->next; tmp = tmp->next);
- tmp->next = new_node;
- }
- }
- return rc;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement