删除链表结点O(1)时间
来源:互联网 发布:扑克牌喝酒游戏知乎 编辑:程序博客网 时间:2024/05/21 08:42
删除链表结点,根据结点的位置,和链表结点数量可分三种情况
1.删除非尾结点,链表的结点数量 >= 2
2.删除只有一个结点的链表,结点数量 == 1
3.删除尾结点,结点数量 >= 2
当然,上面这个3中情况都是已经确定要删除结点在链表中,这个我在delete_node函数内没有做处理,而是把这个问题抛给了delete_node函数的调用者,因为要保证O(1)时间完成删除结点,那么久必须这么干。
C语言代码:
typedef struct list_node{ int value; struct list_node *next;}list_node;void delete_node(list_node** list_head, list_node* to_be_deleted){ if (!list_head || !to_be_deleted) return; // 1.delete not tail node if (to_be_deleted->next != NULL){ list_node *next = to_be_deleted->next; to_be_deleted->value = next->value; to_be_deleted->next = next->next; free(next); next = NULL; } // 2.delete only one node list else if (*list_head == to_be_deleted){ free(to_be_deleted); to_be_deleted = NULL; *list_head = NULL; } // 3.delete tail node in list that have more than one node else{ list_node *node = *list_head; while(node->next != to_be_deleted) node = node->next; node->next = NULL; free(to_be_deleted); to_be_deleted = NULL; }}
阅读全文
0 0
- O(1)时间删除链表结点
- O(1)时间删除链表结点
- O(1)时间删除链表结点
- O(1)时间删除链表结点
- 删除链表结点O(1)时间
- 在O(1)时间删除链表结点--总结
- 在O(1)时间删除链表结点
- 在O(1)时间删除链表结点
- 033-在O(1)时间删除链表结点
- 在O(1)平均时间删除链表结点 [# 13]
- 在O(1)时间删除链表结点
- 在O(1)平均时间删除链表结点
- 在O(1)时间删除链表结点--总结
- 在O(1)时间删除链表结点
- 删除链表结点要求O(1)时间复杂度
- 在O(1)时间删除链表结点
- 在O(1)时间删除链表结点
- 在O(1)时间删除链表结点
- andorid 微信 分享开发以及解决分享闪退问题
- 【知了堂学习笔记】利用ajax实现web中的批量删除
- new和delete,malloc和free 转自http://www.kuqin.com/effectivec2e/ch01a.htm
- 我的互联网价值观、方法论和个人实践(4)-个人信用模型
- struts2获取前台传递过来的数据的三种方式
- 删除链表结点O(1)时间
- 内核对象(3)
- l练习四 求一个n阶方阵对角线元素之和。
- 探索推荐引擎内部的秘密
- Hadoop Sequence File 文件的读取和写入
- ActiveMQ的多种部署方式
- 华硕 B150M-ET SERIES主板加装内存条
- MySQL PHP 语法&连接
- R语言:切换科学计数法和更换小数点位数