Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- struct list_node {
- int data;
- int licznik;
- struct list_node *next;
- } *list_pointer;
- struct list_node *create_list(int data)
- {
- struct list_node *first = (struct list_node *)malloc(sizeof(struct list_node));
- if(first) {
- first->data = data;
- first->licznik = 1;
- first->next = NULL;
- }
- return first;
- }
- struct list_node *add_at_front(struct list_node *list_pointer, struct list_node *new_node)
- {
- new_node->next = list_pointer;
- return new_node;
- }
- struct list_node *find_spot(struct list_node *list_pointer, int data)
- {
- struct list_node *previous = NULL;
- while(list_pointer && list_pointer->data<data) {
- previous = list_pointer;
- list_pointer = list_pointer->next;
- }
- return previous;
- }
- void add_in_middle_or_at_back(struct list_node *node, struct list_node *new_node)
- {
- new_node->next = node->next;
- node->next = new_node;
- }
- struct list_node *add_node(struct list_node *list_pointer, int data)
- {
- struct list_node *new_node = (struct list_node *)malloc(sizeof(struct list_node));
- if(list_pointer && new_node) {
- new_node->data = data;
- list_pointer->licznik = list_pointer->licznik+1;
- if(list_pointer->data>=data) {
- return add_at_front(list_pointer, new_node);
- } else {
- struct list_node *node= find_spot(list_pointer,data);
- add_in_middle_or_at_back(node,new_node);
- }
- }
- return list_pointer;
- }
- void print_list(struct list_node *list_pointer)
- {
- while(list_pointer) {
- printf("%d ",list_pointer->data);
- list_pointer=list_pointer->next;
- }
- puts("");
- }
- int main(void)
- {
- list_pointer = create_list(0);
- int i;
- for(i=1; i<5; i++)
- list_pointer=add_node(list_pointer,i);
- print_list(list_pointer);
- printf("Ilosc elemetow w tablicy %d",list_pointer->licznik);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement