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

原创 2018年04月15日 11:45:43

企业链表参考:

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

Linux内核链表VS传统链表

Linux内核中的链表是一个C实现的链表的典型 传统的链表都是数据和指针装在一个节点里: struct node {     type data;     struct node *prev,*nex...
  • bbs375
  • bbs375
  • 2016-09-20 15:22:14
  • 415

单链表的插入操作

从C和指针这本书中学到的优化插入函数写法: #include typedef struct Node{ int value; struct Node*link; }Node; int sll...
  • wdkirchhoff
  • wdkirchhoff
  • 2014-11-25 17:46:06
  • 802

C语言通用数据类型链表的实现

可接受任意类型的数据的C语言链表的实现(说白了其实就是链表结构体中有一个void * 类型指针即可)      今天在宣讲会上讲了一下我所写的那个可以接收任意类型的参数类型的链表,感...
  • zyboy2000
  • zyboy2000
  • 2009-09-24 09:22:00
  • 1465

C++实现链表模板(链表项的数据元素可以为任意类型):链表项的插入、删除、链表的打印、两个链表的连接VS2010

  • 2014年08月21日 15:43
  • 5.1MB
  • 下载

数据结构之链表基本操作总结

数组与链表的区别  数组(顺序存储)和链表(链式存储)是两种不同的数据存储方式。 数组是一组具有相同类型和名称的变量的集合,这些变量称为数组的元素,每个数组元素都有一个编号,这个编号称...
  • Lily_whl
  • Lily_whl
  • 2017-05-11 18:22:11
  • 2455

学习总结-定义新的数据类型,一个新类的组成

444
  • u013470578
  • u013470578
  • 2014-01-31 21:21:28
  • 870

链表归并的操作,将两个链表合并成一个链表

  • 2011年05月03日 12:59
  • 3.46MB
  • 下载

数据结构-链表的简实现->学生管理系统

C++第一节课,老师给我们留了个作业,用C语言实现学生管系统。 要求实现:增删改查(包含文件操作) 本学渣就腆着脸发出来了。简单小程序。C语言初学的一点小应用 #include #include...
  • qq_36693404
  • qq_36693404
  • 2017-03-04 16:57:45
  • 369

一个简单的链表类模板

好久没来学堂了,主要是因为过去的一年里忙得多,学得少,如今我面对着巨大的压力,才深深地感受到学无止境的深切含义。闲话不多说了,回归正题:一个简单的模板链表类。 前段时间,回顾了下C++的模板类的知识...
  • u011963627
  • u011963627
  • 2014-05-03 15:05:01
  • 2638

如何实现单链表的增删操作

链表作为最基础的数据结构,在程序设计中具有非常重要的作用,起存储特点如下:可以用任意一组存储单元来存储单链表中的数据元素(存储单元可以是不连续的),而且,除了存储每个数据元素ai 外,还必须存储指示其...
  • yuzhibo001
  • yuzhibo001
  • 2017-07-27 17:56:58
  • 185
收藏助手
不良信息举报
您举报文章:传统链表实现多种数据类型操作
举报原因:
原因补充:

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