Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include "list_2.h"
- struct nodo{
- int key;
- link pred, next;
- };
- void swap(list l, int k){
- int i = 0, tmp;
- link h = l.head;
- link t = l.tail;
- if(k < 0) //aggiunto controllo
- return;
- if(h == NULL)
- return;
- for( ; i < k ; t = t->pred, h = h->next){
- if(t == h)
- return;
- i++;
- }
- tmp = h->key;
- h->key = t->key;
- t->key = tmp;
- }
- void initList(list *l){
- l->tail = NULL;
- l->head = NULL;
- }
- void insertHead(list *l, int val){
- if(l->head == NULL){
- l->head = malloc(sizeof(struct nodo));
- l->head->pred = NULL;
- l->head->key = val;
- l->head->next = NULL;
- l->tail = l->head;
- return;
- }
- link x = malloc(sizeof(link *));
- if(x == NULL){
- printf("errore nell'allocazione del nodo\n");
- return;
- }
- x->key = val;
- x->pred = NULL;
- x->next = l->head;
- l->head->pred = x;
- l->head = x;
- }
- void insertTail(list *l, int val){
- if(l->tail == NULL){
- l->head = malloc(sizeof(struct nodo));
- l->head->pred = NULL;
- l->head->key = val;
- l->head->next = NULL;
- l->tail = l->head;
- return;
- }
- link x = malloc(sizeof(link *));
- if(x == NULL){
- printf("errore nell'allocazione del nodo\n");
- return;
- }
- x->key = val;
- x->pred = l->tail;
- x->next = NULL;
- l->tail->next = x;
- l->tail = x;
- }
- void delKey(list *l, int k){
- link x = l->head;
- link y;
- if(x == NULL)
- return;
- for( ; x != NULL ; y = x, x = x->next){
- if(x->key == k){
- if(x == l->head){
- l->head = l->head->next;
- free(x);
- return;
- }
- if(x == l->tail){
- l->tail = l->tail->pred;
- free(x);
- return;
- }
- y->next = x->next;
- x->next->pred = x->pred;
- free(x);
- return;
- }
- }
- }
- void printList(FILE *fp, list *l){
- link x = l->head;
- if(x == NULL)
- return;
- for( ; x != NULL ; x = x->next)
- printf(" %d ", x->key);
- printf("\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement