二 链表

1.链表节点使用ListNode结构,是一个双向的链表,同时,还实现了一个控制所有ListNode的结构list:

typedef struct listNode {

    // 前置节点
struct listNode *prev; // 后置节点
struct listNode *next; // 节点的值
void *value; } listNode;
typedef struct list { // 表头节点
listNode *head; // 表尾节点
listNode *tail; // 节点值复制函数
void *(*dup)(void *ptr); // 节点值释放函数
void (*free)(void *ptr); // 节点值对比函数
int (*match)(void *ptr, void *key); // 链表所包含的节点数量
unsigned long len; } list;

由list和listnode组成的基本结构如下,可见

- listNode里的prev和next构成双向列表

- list.head和list.tail使访问头尾node的复杂度为o(1)

- 头Node的prev和尾node的next指向NULL,不会成环

- list.len使访问list长度的复杂度为o(1)

- 多态:通过list.match,list.free和list.dup来实现多态,即支持各种类型的listnode.value

最新文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(50)-Easyui 扁平化皮肤
  2. jquery on和bind
  3. spring+task配置
  4. 什么时候加上android.intent.category.DEFAULT
  5. Docker的单主机容器网络
  6. jquery 图片手风琴效果
  7. Java 设计模式_复合模式(2016-08-31)
  8. Flex中的FusionCharts 2D饼图
  9. Distance on the tree
  10. 6-MVC结构简介
  11. docker 清理容器的命令
  12. Android Studio提示 Connection reset
  13. 运行pytorch代码遇到的error解决办法
  14. tomcat在Debug模式下无法启动解决办法
  15. SharePoint 2010:“&”作为SharePoint账号密码引起的错误
  16. hbase-java-api002(flush)
  17. java多线程_01_线程的基本概念
  18. 关于Mysql数据库进行多表查询时设计编程思想
  19. windows sserver 2008远程桌面端口修改
  20. HDU 6462.人类史上最大最好的希望事件-递推 (“字节跳动-文远知行杯”广东工业大学第十四届程序设计竞赛)

热门文章

  1. (1)解锁 MongoDB replica set核心姿势
  2. Webpack实战(二):webpack-dev-server的介绍与用法
  3. 一文带你看清HTTP所有概念
  4. dp——洛谷 P1541 乌龟棋 —— by hyl天梦
  5. scala 对一个数组分组操作
  6. 关于checkbox取值的问题
  7. 【java基础】String、StringBuilder和StringBuffer的区别
  8. Stream排序Map集合
  9. typescript 为什么使用 let呢
  10. 使用requests模块的网络编程