剔除通用链表中符合条件的节点

删除通用链表中符合条件的节点
一个通用链表,每个节点存放的信息不同,如有的存放学生信息(学号、成绩、姓名),有的存放老师信息(编号、姓名、工资、年资),如何找到某个学号的学生?

------解决方案--------------------
探讨
引用:

用 共享链表吧,将指针域 与数据域 分开存放。

找的话,就遍历 一下链表 不就找到了

我就是用共享链表,指针域和数据域分开。
遍历是可以,不过遍历每次都得从头开始,如果要删除两个学生,就得遍历两次,要是节点很多,这样效率会比较低。而且下次要删除老师信息,函数得重写,有没有什么办法可以遍历一次就可以的?貌似是用回调函数可以实现。。。

------解决方案--------------------
要是这样的话,必须所有数据都使用一个共同的包头吧。
就是有一个字段说明是什么数据。

比较的时候先比较类型,然后再比较具体的数值不就行了?
------解决方案--------------------
探讨
引用:

用 共享链表吧,将指针域 与数据域 分开存放。

找的话,就遍历 一下链表 不就找到了

我就是用共享链表,指针域和数据域分开。
遍历是可以,不过遍历每次都得从头开始,如果要删除两个学生,就得遍历两次,要是节点很多,这样效率会比较低。而且下次要删除老师信息,函数得重写,有没有什么办法可以遍历一次就可以的?貌似是用回调函数可以实现。。。