首页 > 解决方案 > 反向遍历链表的函数的空间复杂度分析?

问题描述

给定一个具有以下结构的节点:

typedef struct listElementStruct{
  void* data;
  size_t size; //size of data not list
  struct listElementStruct* next;
  void (*print_func)(void*); //pointer to one of the custom print functions
} listElement;

该函数是否具有恒定的内存 O(1) 或线性 O(n) 空间复杂度?

void reverse_traverse(listElement* start){

  listElement* current = start;
  int size_of_list=0;

  while(current != NULL){
      current=current->next;
      size_of_list++;
  }

  int nextVisit = size_of_list;

  While(nextVisit>=0){
     current = start;
     for(int i=0;i<nextVisit;i++){
         current = current->next;
     } 
     current->print_func(current->data);
     nextVisit--;
  }
}

标签: cdata-structureslinked-listspace-complexity

解决方案


推荐阅读