企业链表的实现

原创 2018年04月15日 21:11:36

传统链表的讲解参考:

https://blog.csdn.net/yanggx0929/article/details/79947351


所谓企业链表的思想来源于linux内核链表的思想,但又有些不同

1. 企业链表的结构:

节点结构


链表结构

企业链表节点中不包含数据项,只有指针项,数据项用户自己定义,只需要把链表节点放入用户自定义数据项的顶端即可,如下图:


链表的结构体定义如下:


节点LinkNode中只包含一个指向下一个节点的指针,链表中包含链表头和链表长度。

2. 链表功能解析

初始化链表


由于LINKLIST中的head定义为结构体类型,而不是指针,所以不用分配额外的内存空间,当然此处也可以用指针来定义head。

指定位置插入数据


注意:此处插入的是节点指针LinkNode类型的数据data,由于数据的类型为用户定义,且用户数据类型的最上端为链表节点类型,所以再传入数据时将用户数据的指针类型强行转换为链表指针类型传入。

删除指定节点的值


由于没有为链表的节点分配内存,节点数据都是用户传入的,故此处不需要free节点内存

查找链表的值对应的下标


由于数据类型为用户自定义,故不能使用==来判定数据是否匹配,此处使用函数指针,用于用户传入自定义的比较函数

typedef int(*MYCOMPARE)(LinkNode *, LinkNode *);

打印链表


此处的print函数同理,由于不知道用户的数据类型,由用户自己传入自己的打印函数

删除链表


由于只申请了链表内存,各个节点并没有分配内存,故只需要free链表指针list.

传统链表的讲解参考:

https://blog.csdn.net/yanggx0929/article/details/79947351

企业级的使用链表

一,企业级链表的设计数据结构的设计//链接链表的指针 struct LinedNode { struct LinedNode* next; } LinedNode;//保存链表的信息 stru...
  • Poisx
  • Poisx
  • 2017-09-05 22:21:03
  • 224

企业链表模型——业务实体和底层链表算法分离

LinkList.h: #ifndef _MYLINKLIST_H_ #define _MYLINKLIST_H_ typedef void LinkList; typedef struct _...
  • songshiMVP1
  • songshiMVP1
  • 2016-02-29 17:20:38
  • 991

数据结构二:企业级线性链表存储底层封装

该链表的节点结构不像初学者所接受的那种业务节点包含指针节点如同: typedef struct TeacherNode { int age; char* name; struc...
  • szqsdq
  • szqsdq
  • 2015-07-31 10:54:34
  • 964

C语言实现企业员工管理系统的源代码

  • 2009年02月08日 02:45
  • 32KB
  • 下载

c语言课程设计-职工信息管理系统-单链表

  • 2013年01月09日 17:10
  • 157KB
  • 下载

用链表写职工管理系统

职工信息管理系统: 存在一个数据文件,用来存储职工各种信息:职工号,姓名,年龄,性别, 邮编,部门,工资 可以注册新职工; 允许修改职工信息 允许删除职工信息; 4,按照按照姓名和部门查询职...
  • czhzasui
  • czhzasui
  • 2017-02-12 19:45:24
  • 1342

链表实现栈

  • 2017年12月28日 15:20
  • 2KB
  • 下载

队列的实现(2):用链表实现队列

上一篇文章: http://blog.csdn.net/keheinash/article/details/51125063 利用数组实现了循环队列,这是静态的队列,缺点是需要预设大小,当队列满时...
  • keheinash
  • keheinash
  • 2016-04-13 15:03:51
  • 2154

二叉树--链表实现

# include # include typedef struct TREE { char data; struct TREE * lchild; struct TREE * rchil...
  • wan767912626
  • wan767912626
  • 2016-04-03 15:33:18
  • 1476

【数据结构】链表的原理及java实现

一:单向链表基本介绍链表是一种数据结构,和数组同级。比如,Java中我们使用的ArrayList,其实现原理是数组。而LinkedList的实现原理就是链表了。链表在进行循环遍历时效率不高,但是插入和...
  • jianyuerensheng
  • jianyuerensheng
  • 2016-04-20 13:57:30
  • 39022
收藏助手
不良信息举报
您举报文章:企业链表的实现
举报原因:
原因补充:

(最多只允许输入30个字)