传统链表实现多种数据类型操作

企业链表参考:

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

1. 传统链表中的节点结构:


相应的结构体结构如下:


data类型之所以定义为void* 是为了对所有数据类型进行兼容。

next指向下一个链表的节点

2. 构造链表的结构:

传统链表的结构如下:


故可以通过头结点和链表长度来描述一个链表

链表的结构定义如下:


3. 链表功能实现

初始化链表:(为了代码紧凑,此处忽略malloc错误判断)


初始化链表构建了一个链表(LinkList)的结构体,并为其分配内存空间,初始化链表元素,并返回该链表的地址。

链表指定位置插入一个数据data


传统链表插入一个元素的原理是:新建一个链表节点,将该数值传入新建的节点,并将新建节点插入链表:


删除指定位置的值


从链表中查询首个值为data的节点


注意:由于传入的数据类型为void*,故不能用==来判定传入值和链表的值是否相等,这个应该由用户自定义判定函数,这是因为只有用户知道要传入的值类型,故此处我们用的是函数指针用于用户传入器自定义的比较函数

typedef int(*COMPARE)(void*, void*);

打印链表


同理打印链表也要使用用户自定义的打印函数,此处定义函数指针用于用户传入其自定义的打印函数

typedef void(*PRINTLINKNODE)(void *);

销毁链表


欢迎大家批评指正,谢谢

企业链表参考:

https://blog.csdn.net/yanggx0929/article/details/79951067
阅读更多
文章标签: 数据结构
个人分类: 心得 数据结构
上一篇C与C++中的static关键字
下一篇企业链表的实现
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭