Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct nodo {
- int chiave;
- struct nodo *prec, *succ;
- };
- typedef struct nodo nodo;
- struct paridispari {
- nodo *pari;
- nodo *dispari;
- };
- typedef struct paridispari paridispari;
- paridispari PariDispari(nodo *a);
- int main() {
- nodo *first, *second, *third, *fourth, *fifth, *sixth;
- first = (nodo *) malloc(sizeof(nodo));
- second = (nodo *) malloc(sizeof(nodo));
- third = (nodo *) malloc(sizeof(nodo));
- fourth = (nodo *) malloc(sizeof(nodo));
- fifth = (nodo *) malloc(sizeof(nodo));
- sixth = (nodo *) malloc(sizeof(nodo));
- first->chiave = 1;
- first->prec = sixth;
- first->succ = second;
- second->chiave = 2;
- second->prec = first;
- second->succ = third;
- third->chiave = 3;
- third->prec = second;
- third->succ = fourth;
- fourth->chiave = 4;
- fourth->prec = third;
- fourth->succ = fifth;
- fifth->chiave = 5;
- fifth->prec = fourth;
- fifth->succ = sixth;
- sixth->chiave = 6;
- sixth->prec = fifth;
- sixth->succ = first;
- paridispari result;
- result = PariDispari(first);
- printf("%d\n", result.pari->chiave);
- printf("%d\n", result.dispari->chiave);
- }
- paridispari PariDispari(nodo *a) {
- paridispari result = {NULL, NULL};
- if (a == NULL) {
- result.pari = NULL;
- result.dispari = NULL;
- return result;
- }
- nodo *head_pari, *head_dispari, *current, *next_pari, *next_dispari;
- nodo *main_head;
- int i = 0;
- while (a != main_head) {
- if (a->chiave % 2 == 0) {
- if (result.pari == NULL) {
- a->prec = NULL;
- result.pari = a;
- } else {
- result.pari->succ = a;
- }
- } else {
- if (result.dispari == NULL) {
- a->prec = NULL;
- result.dispari = a;
- } else {
- result.dispari->succ = a;
- }
- }
- if (i == 0) {
- main_head = a;
- i++;
- }
- a = a->succ;
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement