Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <iostream>
- using namespace std;
- typedef struct Node
- {
- int val;
- struct Node* next;
- }Node;
- typedef Node* List;
- List init(int val)
- {
- List lista;
- lista = new struct Node;
- lista->val = val;
- lista->next = NULL;
- return lista;
- }
- List addLast(List l, int val)
- {
- List aux;
- if(l == NULL)
- {
- aux = new struct Node;
- aux->val = val;
- aux->next = NULL;
- return aux;
- }
- else
- {
- if(l->next==NULL)
- {
- l->next=init(val);
- return l;
- }
- else
- {
- l->next = addLast(l->next, val);
- return l;
- }
- }
- }
- void printList(List l)
- {
- if(l != NULL)
- {
- while(l != NULL)
- {
- printf("%d ", l->val);
- l = l->next;
- }
- printf("\n");
- }
- else
- {
- printf("The linked list is empty!\n");
- }
- }
- List addFirst(List l, int val)
- {
- List temp;
- temp = new struct Node;
- temp->val = val;
- temp->next = l;
- l = temp;
- return l;
- }
- List delLast(List l)
- {
- List temp;
- temp = l;
- while(temp->next->next != NULL)
- {
- temp = temp->next;
- }
- temp->next = NULL;
- return l;
- }
- List delFirst(List l)
- {
- if(l != NULL)
- {
- l=l->next;
- }
- else
- {
- l = NULL;
- }
- return l;
- }
- List freeList(List l)
- {
- List tmp;
- if(l != NULL)
- {
- while (l != NULL)
- {
- tmp = l;
- l = l->next;
- delete tmp;
- }
- }
- return NULL;
- }
- List addEven(List l)
- {
- int first;
- first = 1;
- List l1;
- if(l == NULL)
- {
- return NULL;
- }
- else
- {
- while(l != NULL)
- {
- if(l->val % 2 == 0)
- {
- if(first == 1)
- {
- l1 = init(l->val);
- first = 0;
- }
- else
- l1 = addLast(l1, l->val);
- }
- l = l->next;
- }
- }
- return l1;
- }
- List addOdd(List l)
- {
- int first;
- first = 1;
- List l1;
- if(l == NULL)
- {
- return NULL;
- }
- else
- {
- while(l != NULL)
- {
- if(l->val % 2 == 1)
- {
- if(first == 1)
- {
- l1 = init(l->val);
- first = 0;
- }
- else
- l1 = addLast(l1, l->val);
- }
- l = l->next;
- }
- }
- return l1;
- }
- int main()
- {
- List l, l1, l2;
- int n;
- l = init(0);
- printList(l);
- scanf("%d", &n);
- while (n!= 0) {
- l = addFirst(l, n);
- scanf("%d", &n);
- }
- printList(l);
- printf("Adaugare la sfarsit!\n");
- l = addLast(l, 10);
- l = addLast(l, 99);
- l = addLast(l, 100);
- printList(l);
- printf("Eliminare ultimul!\n");
- l = delLast(l);
- printList(l);
- printf("Eliminare primul!\n");
- l = delFirst(l);
- printList(l);
- l1 = addEven(l);
- l2 = addOdd(l);
- printList(l1);
- printList(l2);
- l = freeList(l);
- printList(l);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement