Create a reverse LinkedList in C++ from a given LinkedList

前端 未结 10 996
温柔的废话
温柔的废话 2020-11-30 08:37

I\'m having some trouble create a linkedlist in reverse order from a given linkedlist.

I come from a java background, and just started doing some C++.

Can yo

10条回答
  •  心在旅途
    2020-11-30 09:03

      #include 
      /*
          this is a generic (structure agnostic) routine for reversing a singly linked list.
          1st argument is the memory address the structure is located at, and
          2nd argument is the memory address to this particular structure's NEXT member.
      */
      void *rsll(void *struct_address, void *next_address /*(void **)*/)
      {
        uint32_t offset, holder;
        offset = next_address - struct_address;
    
        void **p = struct_address, *progress = NULL;
        while(p)
        {
          void *b;
          holder = (uint32_t)p;
          holder += offset;
          p = (void**)holder; //&(N->next)
          b = *p; //(N->next)
          *p = progress; //(N->next)
          holder = (uint32_t)p;
          holder -= offset;
          p = (void**)holder; //N
          progress = p;
          p = b;
        }
        return progress;
      }
    
      #include 
      int
      main()
      {
        struct list_t
        {
          int integer;
          struct list_t *next;
        };
        struct list_t d = {40,NULL},
                      c = {30,&d},
                      b = {23,&c},
                      a = {10,&b};
        struct list_t *list;
        list = &a;
        list = rsll(list,&(list->next));
        while(list)
        {
          printf("%d\n",list->integer);
          list = list->next;
        }
        return 0;
      }
    

提交回复
热议问题