实现链表逆序,空间复杂度为O(1)
来源:互联网 发布:nba新浪数据库 编辑:程序博客网 时间:2024/06/14 21:05
一个算法的空间复杂度只考虑在运行过程中为局部变量分配的存储空间的大小,它包括为参数表中形参变量分配的存储空间和为在函数体中定义的局部变量分配的存储空间两个部分。
#include <iostream>using namespace std;struct LinkNode{ int data; struct LinkNode* next;};LinkNode* ReverseLink(LinkNode* head){ //声明三个指向链表节点的指针 struct LinkNode* nowHead = head; struct LinkNode* sourceLink = head->next; struct LinkNode* tempNode = NULL; //辅助指针 //进行翻转 while (sourceLink != NULL) { tempNode = sourceLink;//先保存链表头节点的下一个节点 sourceLink = sourceLink->next; tempNode->next = nowHead; nowHead = tempNode; } head->next = NULL; return nowHead;}void PrintLink(struct LinkNode* node){ struct LinkNode* pcurrent = node; while (pcurrent != NULL) { printf("%d ", pcurrent->data); pcurrent = pcurrent->next; } printf("\n");}void test(){ struct LinkNode l1 = { 1, NULL }; struct LinkNode l2 = { 2, NULL }; struct LinkNode l3 = { 3, NULL }; l1.next = &l2; l2.next = &l3; l3.next = NULL; struct LinkNode* node = ReverseLink(&l1); PrintLink(node);}int main(){ test(); return 0;}
阅读全文
0 0
- 实现链表逆序,空间复杂度为O(1)
- 反转链表:空间复杂度为O(1)的算法
- 时间复杂度为O(n),空间复杂度为O(1)
- 从顺序表中删除所有值为x的元素(Java实现),要求时间复杂度O(n),空间复杂度O(1)
- 汉诺塔的思想实现栈的逆序(空间复杂度O(1) )
- O(1) 空间复杂度逆序栈和排序栈
- (C#)实现时间复杂度为O(n)空间复杂度为O(1)的数组中奇偶数分离
- 对链表排序 要求时间 复杂度为 O(nlogn) 空间复杂度为常量
- 如何实现在O(n)时间内排序,并且空间复杂度为O(1)
- 实现左移指定位数,时间复杂度O(n) ,空间复杂度O(1)
- Candy (分糖果),时间复杂度O(n),空间复杂度为O(1),且只需遍历一次的实现
- 数据结构之 将顺序表所有元素逆置,要求空间复杂度为O(1)
- 合并两个有序链表--实现1+2+3+....+n,时间复杂度为O(1)
- 给定一个无序单链表头节点head,实现单链表的选择排序,要求:额外空间复杂度为O(1)
- 【编程练习】空间复杂度为O(1)的线性排序原理及编程(GNU C实现)
- 一个时间复杂度为O(n),空间复杂度为O(1)的排序算法
- 排序的时间复杂度为O(n),空间复杂度为O(1)
- 时间复杂度为O(N),空间复杂度为O(1)的排序算法
- JS判断json中某个key是否存在
- 599. Minimum Index Sum of Two Lists
- spring声明式事务源码剖析(下)
- 快速的找到一个对象
- ubuntu 16.04 anaconda python3.5 opencv
- 实现链表逆序,空间复杂度为O(1)
- jQ ajax的使用
- 使用Redis缓存同步,从缓存中存取数据的一些使用
- BAD packet signature 18245 错误解决
- 推荐: 2017年帮助入门的书
- 问题整理
- 由循环次数设定引发的一些思考
- chapter10_2图片读取覆盖像素
- Android之自定义ListView