Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- struct sll_node
- {
- int data;
- struct sll_node *next;
- };
- bool insert_before(struct sll_node **node, int data)
- {
- struct sll_node *new_node = (struct sll_node *)malloc(sizeof(struct sll_node));
- if(NULL!=new_node){
- new_node->data = data;
- new_node->next = *node;
- * node = new_node;
- return true;
- }
- return false;
- }
- bool insert_back(struct sll_node **node, int data)
- {
- *node = (struct sll_node *)malloc(sizeof(struct sll_node));
- if(NULL!= *node){
- (*node)->data = data;
- (*node)->next = NULL;
- return true;
- }
- return false;
- }
- bool insert_node(struct sll_node **node, int data)
- {
- if(NULL!= *node){
- if((*node)->data<=data)
- return insert_before(node, data);
- else
- return insert_node (&(*node)->next, data );
- }
- else
- return insert_back(node, data);
- }
- void delete_node(struct sll_node **node, int data)
- {
- if(NULL!= *node){
- if((*node)->data == data){
- struct sll_node *next = (*node)->next;
- free(*node);
- *node = next;
- }
- else
- delete_node(&(*node)->next, data);
- }
- }
- void print_list(struct sll_node *node)
- {
- if(NULL!=node){
- printf(" %d ", node->data);
- print_list(node->next);
- }
- else
- printf("\n");
- }
- void print_list_backwards(struct sll_node *node)
- {
- if(NULL!=node){
- print_list_backwards(node->next);
- printf(" %d ", node->data);
- }
- }
- void remove_list(struct sll_node **node)
- {
- if(NULL!= *node){
- remove_list(&(*node)->next);
- free(*node);
- }
- }
- void usun(struct sll_node **node, int tmp)
- {
- if(NULL!=(*node)){
- tmp = (*node)->data;
- if(tmp!=(*node)->next){
- printf("test %d", tmp);
- }
- free(tmp);
- }
- if(node)
- usun(&(*node)->next, tmp);
- }
- int main()
- {
- struct sll_node *front = NULL;
- int i, tmp;
- for(i=1; i<5; i++)
- if(! insert_node (&front, i))
- fprintf(stderr, " Blad dodawania elementu do listy!\n");
- for(i=6; i<10; i++)
- if(! insert_node (&front, i))
- fprintf(stderr, " Blad dodawania elementu do listy!\n");
- print_list(front);
- printf("\n");
- if(! insert_node(&front, 5))
- fprintf (stderr , " Blad dodawania elementu do listy!\n");
- if(! insert_node(&front, 5))
- fprintf (stderr , " Blad dodawania elementu do listy!\n");
- if(! insert_node(&front, 5))
- fprintf (stderr , " Blad dodawania elementu do listy!\n");
- if(! insert_node(&front, 7))
- fprintf (stderr , " Blad dodawania elementu do listy!\n");
- print_list(front);
- puts("TEST");
- usun(&front, tmp);
- print_list(front);
- puts("TEST");
- remove_list(&front);
- front = NULL;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement