Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include "List.h"
- /*
- typedef struct Node{
- void* data;
- struct Node* next;
- struct Node* prev;
- } node;
- typedef struct{
- node* first; //puntero al primer elemento
- node* current;
- }Lista;
- */
- ///////////////////////////////////////////////////
- ///////////////////////////////////////////////////
- //elimina el primer dato de la lista
- /*void popfront(List* L);
- //elimina el mo dato de la lista
- void popback(List* L);
- //inserta el dato a continuaciel mo accedido usando first o next
- void pushcurrent(List* L, void* data);
- //retorna el siguiente dato de la lista
- void* next(List* L);
- //retorna el mo dato de la lista
- void* last(List* L);*/
- ///////////////////////////////////////////////////
- ///////////////////////////////////////////////////
- Lista* createList(){
- Lista* L;
- L = (Lista*) malloc (sizeof(Lista));
- L->first = NULL;
- L->current = NULL;
- return L;
- }
- ////////////////////////////////////////////
- void* first(Lista* list){
- list->current = list->first;
- return list->current->data;
- }
- void* next(Lista *list){
- list->current = list->current->next;
- return list->current->data;
- }
- ///////////////////////////////////////////
- node* createNode(void* data){
- node* n = (node*) calloc(1, sizeof(node));
- n->data = data;
- n->next= NULL;
- return n;
- }
- ///////////////////////////////////////////
- void pushBack(Lista* list, void* data){
- node* nodo = createNode(data);
- node* nodoaux = createNode(data);
- if(list->first == NULL){
- list->first = nodo; //Se le asigna al primer node El "nodo"
- list->first->next = nodo; //Se le asigna al nodo que esta después del primero El "nodo";
- list->first->prev = nodo; //Se le asigna al que viene antes del primero El "nodo"
- }else{
- nodoaux = list->first->prev; //Se le asigna a "nodeaux" el nodo que viene antes del "primer nodo"
- list->first->prev = nodo; //Se le asigna "nodo" al nodo que viene "antes del primer nodo"
- nodo->prev = nodoaux; //Se le asigna "nodoaux" al nodo que esta "antes de nodo"
- nodo->next = list->first; //Se le asigna el "primer nodo" al nodo que esta "después del nodo"
- nodoaux->next = nodo; //Se le asigna "nodo" al nodo que viene "después de nodoaux"
- }
- }
- //////////////////////////////////////////
- void pushFront(Lista* L, void* dato) {
- node* nodo= createNode(dato);
- if(L->first == NULL){
- nodo->next = nodo;
- nodo->prev = nodo;
- L->first = nodo;
- }else{
- nodo->next = L->first;
- nodo->prev = L->first->prev;
- L->first->prev->next = nodo;
- L->first->prev = nodo;
- L->first = nodo;
- }
- }
- /////////////////////////////////////////////
- void popCurrent(Lista* list){
- if(list->current->prev != NULL){
- list->current->prev->next = list->current->next;
- }else{
- list->first = list->current->next;
- }
- if(list->current->next!= NULL)
- list->current->next->prev =list->current->prev;
- }
- //////////////////////////////////////////////
- /////////////////////////////////////////////
Advertisement
Add Comment
Please, Sign In to add comment