c - 反向遍历链表的函数的空间复杂度分析?
问题描述
给定一个具有以下结构的节点:
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--;
}
}
解决方案
推荐阅读
- php - 如何使用 substr 从具有许多字符的字符串中获取凭据并将它们存储在变量中
- c - _declspec 应该放在哪里?
- entity-framework - 将引用表数据设为只读 - EF Core
- ios - 如何使用 int 值将项目添加到表视图
- jquery - 如何重用自定义 jQuery 验证方法?
- android - 无法在 Parameterized.class junit 测试中未调用 Looper.prepare() 的线程内创建处理程序
- c# - C# UDP 客户端读取多播 IP(本地接口),并将单播 UDP 发送到 VPN
- javascript - 如何用 sinon/chai 测试 axios 请求参数
- c# - 如何从 IP 地址获取设备的制造商名称
- python - 用于使用 Amazon Cognito 进行身份验证的 Python 和 Flask