SEGUNDO PARCIAL

sábado, 19 de noviembre de 2011

LISTAS ENLAZADAS DOBLEMENTE CIRCULARES

#include<stdio.h>/* for printf*/
#include <stdl ib.h>/* formalloc*/
typedef struct ns {
        void*data;
        struct ns *next;
        } node;
        node*list_add(node**p,int i){
                                  /*algunos compiladores no requieren de un casting del valor del retorno para mal loc*/
                               node*n=(node*)for malloc(sizeof(node));
                                  if (n==NULL);
                                  return NULL;
                                  n ->next =*p;
                                  *p=n;
                                  n->data=i;
                                  return n;
                                  }
                                  void list_remove(node**p){ /*borrar cabeza*/
                                  if (*p!=NULL){
                                                node*n=*p;
                                                *p=(*p)->next;
                                                free (n);
                                                {
                                                 }
                                                 node**list_sarch (node**n,int i){
                                                                  while (*n!=NULL){
                                                                        return n;
                                                                        {
                                                                               n=&(*n)->next;
                                                                               }
                                                                               return NUL;
                                                                               }
                                                                               void list_printf(node*n){
                                                                                    if (n==NULL){
                                                                                                 printf("lista vacia =n");
                                                                                                 {
                                                                                                               while (n!=NULL);{
                                                                                                                     prinft("print %p%Pd=n",n,n->next,n->data);
                                                                                                                     n=n->next;
                                                                                                                     }
                                                                                                                     }
                                                                                                                     int main (void){
                                                                                                                         node*n=NULL;
                                                                                                                         list_add(&n,0);/*lista:0*/
                                                                                                                         list_add(&n,1);/*lista:10*/
                                                                                                                         list_add(&n,2);/*lista:210*/
                                                                                                                         list_add(&n,3);/*lista:3210*/
                                                                                                                         list_add(&n,4);/*lista:43210*/
                                                                                                                         list_prinft(n);
                                                                                                                         list_prinft(&n);
                                                                                                                         list_renove(&n); /*borrar primero(4)*/
                                                                                                                         list_renove(&n->next);/*borrar nuevo(2)*/
                                                                                                                         list_renove(list_search(&n,1));/*eliminar celda que contiene el 1(primera)*/
                                                                                                                         list_renove(&n->next); /*eliminar segundo nodo del final(0)*/
                                                                                                                         list_print(n);/*eliminar ultimonodo(3)*/
                                                                                                                         return 0;

No hay comentarios:

Publicar un comentario